java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > sql的括号问题

聊聊mybatis sql的括号问题

作者:hery186

这篇文章主要介绍了mybatis sql的括号问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

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>

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

您可能感兴趣的文章:
阅读全文