聊聊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化+注解進(jìn)階)
本篇文章主要介紹了詳解SpringBoot 快速整合Mybatis(去XML化+注解進(jìn)階),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2017-11-11利用Java對PDF文件進(jìn)行電子簽章的實戰(zhàn)過程
隨著電子賬單、回單、通知、合同的流行,電子文檔的可信度變得非常重要,為防止非法篡改,確保文檔的權(quán)威性,我們可以對PDF進(jìn)行電子簽章,這篇文章主要給大家介紹了關(guān)于如何利用Java對PDF文件進(jìn)行電子簽章的相關(guān)資料,需要的朋友可以參考下2021-07-07淺談@RequestParam(required = true)的誤區(qū)
這篇文章主要介紹了@RequestParam(required = true)的誤區(qū),具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2021-11-11輕松掌握J(rèn)ava注解,讓編程更智能、更優(yōu)雅
輕松掌握J(rèn)ava注解?沒問題!想要讓你的Java代碼更具可讀性、維護(hù)性,同時提升開發(fā)效率?本指南將帶你快速入門Java注解的世界,只需短短幾分鐘,你就能揭秘這個強(qiáng)大的編程工具,讓編寫有聲明性邏輯的代碼變得輕而易舉,趕快一起來探索吧!2024-01-01springboot2.0如何通過fastdfs實現(xiàn)文件分布式上傳
這篇文章主要介紹了springboot2.0如何通過fastdfs實現(xiàn)文件分布式上傳,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2019-12-12