欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

聊聊mybatis sql的括号问题

程序员文章站 2022-06-16 12:57:09
目录mybatis sql的括号问题mybatis多层括号(超过三层)解析不了mybatis sql的括号问题因为一段sql 要关联 a,b,c三个表,查三个表里的数据一开始写的是select * f...

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>

以上为个人经验,希望能给大家一个参考,也希望大家多多支持。