聊聊mybatis sql的括號問題
mybatis sql的括號問題
因為一段sql 要關(guān)聯(lián) A,B,C三個表,查三個表里的數(shù)據(jù)
一開始寫的是
select * from a,b,c ? ??
結(jié)果出來很多重復(fù)數(shù)據(jù)
而三個表是用id關(guān)聯(lián)的
所以改成
select * from a ?where id in (select id from a,b,c 關(guān)聯(lián)條件)
然后在mybatis里在寫級聯(lián)查詢
把B,C表里的數(shù)據(jù)以數(shù)組的形式查出來
ok了 避免了數(shù)據(jù)重復(fù)一大堆
但是人說,級聯(lián)查詢,缺點: 查詢速度慢
如果用exists 查的比較快
mybatis多層括號(超過三層)解析不了
加<![CDATA[ ]]>即可,要么用存視圖,應(yīng)用在局部也可
<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>
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解SpringBoot 快速整合Mybatis(去XML化+注解進階)
本篇文章主要介紹了詳解SpringBoot 快速整合Mybatis(去XML化+注解進階),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-11-11淺談@RequestParam(required = true)的誤區(qū)
這篇文章主要介紹了@RequestParam(required = true)的誤區(qū),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11springboot2.0如何通過fastdfs實現(xiàn)文件分布式上傳
這篇文章主要介紹了springboot2.0如何通過fastdfs實現(xiàn)文件分布式上傳,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-12-12