聊聊mybatissql的括号问题
短信预约 -IT技能 免费直播动态提醒
mybatis sql的括号问题
因为一段sql 要关联 A,B,C三个表,查三个表里的数据
一开始写的是
select * from a,b,c
结果出来很多重复数据
而三个表是用id关联的
所以改成
select * from a where id in (select id from a,b,c 关联条件)
然后在mybatis里在写级联查询
把B,C表里的数据以数组的形式查出来
ok了 避免了数据重复一大堆
但是人说,级联查询,缺点: 查询速度慢
如果用exists 查的比较快
mybatis多层括号(超过三层)解析不了
加<![CDATA[ ]]>即可,要么用存视图,应用在局部也可
<select id="selectfirm" resultType="com.esteel.web.entity.CusFirmBean" parameterType="com.esteel.web.beanvo.CusFirmBeanVo">
<![CDATA[
select a.*,a.customer_name as customerName from tb_cus_firm a where a.market_key = #{marketKey} order by customer_key
]]>
</select>
<select id="getEmailCount" parameterType="map" resultMap="account1Map">
SELECT * FROM TB_CUS_USER WHERE 1=1
<if test="EMAIL!=null and EMAIL!=''">
and EMAIL=#{EMAIL}
</if>
<if test="CUS_TRADE_KIND!=null and CUS_TRADE_KIND!=''">
and CUS_TRADE_KIND =#{CUS_TRADE_KIND}
</if>
<if test="CUS_USER_KEY!=null and CUS_USER_KEY!=''">
and cus_user_key <![CDATA[<>]]> #{CUS_USER_KEY}
</if>
</select>
以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341