聊聊mybatis sql的括号问题
更新时间:2022年01月12日 08:55:13 作者: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>以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Java链表(Linked List)基本原理与实现方法入门示例
这篇文章主要介绍了Java链表(Linked List)基本原理与实现方法,结合实例形式分析了Java链表(Linked List)的功能、原理、实现方法与操作注意事项,需要的朋友可以参考下2020-03-03
深入理解Java8新特性之Stream API的创建方式和中间操作步骤
Stream是Java8的一大亮点,是对容器对象功能的增强,它专注于对容器对象进行各种非常便利、高效的 聚合操作(aggregate operation)或者大批量数据操作。Stream API借助于同样新出现的Lambda表达式,极大的提高编程效率和程序可读性,感兴趣的朋友快来看看吧2021-11-11
Java Stream流中的filter()使用方法举例详解
filter()是Java Stream API中的中间操作,用于根据给定的Predicate条件筛选流中的元素,它通过接收一个返回boolean值的函数(断言)作为参数,筛选出满足条件的元素并收集到新的流中,文中通过代码介绍的非常详细,需要的朋友可以参考下2024-11-11


最新评论