MyBatis中使用foreach循環(huán)的坑及解決
使用foreach循環(huán)的坑
我們首先看一段MyBatis中使用foreach循環(huán)的sql:
SELECT * FROM table where id in <foreach item="item" collection="ids1" open="(" close=")" index="0" separator=","> #{item} </foreach>
這段sql執(zhí)行會(huì)添加幾個(gè)占位符,正確寫法foreach寫到一行:
正確寫法為
SELECT * FROM table where id in <foreach item="item" collection="ids1" open="(" close=")" index="0" separator=",">#{item}</foreach>
忽現(xiàn)的Mybatis foreach失效記錄
傳進(jìn)來的 list 肯定有值得,本身代碼沒有問題。 線上也算跑了大半年了。 而且出現(xiàn)的問題時(shí)也只在本機(jī)上.
mybatis.version=3.2.8
代碼:
AND ( ? ?<foreach collection="list" open=" id IN (" separator="," close=")" item="id" index="index"> ? ? ?#{id} ? ?</foreach> OR (GRADE In ('0','1') ? ?AND user_type = '5' ?) )
正確結(jié)果應(yīng)該是:
AND ( id IN ('1','2','3') ? OR (GRADE In ('0', '1') AND user_type = '5') )
實(shí)際結(jié)果:
AND (? ? OR (GRADE In ('0', '1') AND user_type = '5') )
造成SQL 執(zhí)行語法錯(cuò)誤.
復(fù)現(xiàn)方式:暫無復(fù)現(xiàn)方法
解決方案
隨便改了一下Dao.java的一個(gè)文件內(nèi)容(沒做實(shí)際性的內(nèi)容改動(dòng),ide 重新加載了下Dao). bug就好了. 好了 . 了...
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java代碼實(shí)現(xiàn)微信頁面滾動(dòng)防露底(核心代碼)
這篇文章主要介紹了Java代碼實(shí)現(xiàn)微信頁面滾動(dòng)防露底的相關(guān)資料,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2016-09-09怎樣提高mybatis-plus中saveBatch方法的效率
這篇文章主要介紹了怎樣提高mybatis-plus中saveBatch方法的效率問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-07-07JVM內(nèi)存模型/內(nèi)存空間:運(yùn)行時(shí)數(shù)據(jù)區(qū)
這篇文章主要介紹了JVM內(nèi)存模型/內(nèi)存空間的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)Java虛擬機(jī),感興趣的朋友可以了解詳細(xì),希望能夠給你帶來幫助2021-08-08SpringMVC4 + MyBatis3 + SQL Server 2014整合教程(含增刪改查分頁)
這篇文章主要給大家介紹了關(guān)于SpringMVC4 + MyBatis3 + SQL Server 2014整合的相關(guān)資料,文中包括介紹了增刪改查分頁等相關(guān)內(nèi)容,通過示例代碼介紹的非常詳細(xì),分享出來供大家參考學(xué)習(xí),下面來一起看看吧。2017-06-06Java擴(kuò)展庫RxJava的基本結(jié)構(gòu)與適用場(chǎng)景小結(jié)
RxJava(GitHub: https://github.com/ReactiveX/RxJava)能夠幫助Java進(jìn)行異步與事務(wù)驅(qū)動(dòng)的程序編寫,這里我們來作一個(gè)Java擴(kuò)展庫RxJava的基本結(jié)構(gòu)與適用場(chǎng)景小結(jié),剛接觸RxJava的同學(xué)不妨看一下^^2016-06-06Netty進(jìn)階之ChannelPoolMap源碼解析
這篇文章主要介紹了Netty進(jìn)階之ChannelPoolMap源碼解析,ChannelPoolMap是用來存儲(chǔ)ChannelPool和指定key的一個(gè)集合Map,實(shí)際的應(yīng)用場(chǎng)景就是服務(wù)器端是一個(gè)分布式集群服務(wù),擁有多個(gè)配置地址,這樣我們就可以配置多個(gè)服務(wù)地址,減輕單臺(tái)服務(wù)器的壓力,需要的朋友可以參考下2023-11-11