mybatis plus in方法使用說明
如果是List類型的String,例如:List<String>這種類型的,就直接放值就可以了,本文講的是當(dāng)你查詢到的是一個(gè)list集合如何遍歷取值,否則要寫sql和接口就顯得很麻煩。
步驟如下:
//查詢到list集合
List<User> userList = userService.selectById(id);
//結(jié)果集
List<String> resultList = new ArrayList<>();
//遍歷集合取值
userList .forEach(item->{
resultList.add(item.getYouNeedId());
});
//條件構(gòu)造器in上手使用
QueryWrapper<User> qw = new QueryWrapper<>();
qw.in("you_need_id", resultList);
//這里有個(gè)分頁的查詢,你也可以不用分頁,用mybatisplus里面封裝的其他方法
IPage<User> userIPage = userMapper.selectPage(page, qw);
//返回查詢結(jié)果,getRecords也是mybatisplus里面封裝的方法
return contractRecordIPage.getRecords();
補(bǔ)充知識(shí):Mybatis plus中使用in查詢出錯(cuò)是怎么回事
我的情況是這樣的,在使用mybatis plus提供的QueryWrapper方法里的in查詢時(shí),我的參數(shù)為類似“1,2,3,4”這樣的字符串
//要查的參數(shù)
String masterIds = "81554,5654,55948,48945";
QueryWrapper<FpjyPauperInfo> pauperqw = new QueryWrapper<>();
pauperqw.in("user_id",masterIds);
UserInfoService.list(pauperqw);
結(jié)果返回的數(shù)據(jù)與在數(shù)據(jù)庫查出來的數(shù)據(jù)不一樣(這是我的情況,不知道你們會(huì)不會(huì)這樣),我看了控制臺(tái)的sql代碼
==> Preparing:SELECT user_id,user_name,update_job_dt,group_name,create_dt,create_by, update_dt,update_by FROM fpjy_pauper_info WHERE (user_id IN (?)) ==> Parameters: 81554,5654,55948,48945(String) <== Total: 0
查詢錯(cuò)誤原因
我就在網(wǎng)上早了一下發(fā)現(xiàn),在使用mybatis plus提供的QueryWrapper方法時(shí),你給它的參數(shù)是String類型時(shí),在控制臺(tái)上看著是對(duì)的,但是他會(huì)默認(rèn)在參數(shù)的前面和后面加上單引號(hào),因?yàn)樵趍ybatis plus里的xml配置文件里(類似于UserInfoMapper.xml的文件),給的參數(shù)是用 #{參數(shù)名} 的方式
//這段代碼只是舉個(gè)例子
SELECT * FROM userinfo WHERE (user_id IN (#{ids}))
解決方法
這只是我這種情況的解決方法哦
一、找到你要使用的對(duì)象的xml文件(類似于UserInfoMapper.xml的文件)在里面自定義sql語句代碼,給參數(shù)要用 ${參數(shù)名} 的方式,不會(huì)自定義sql語句可以去網(wǎng)上查查,網(wǎng)上有太多了,在這里我就不寫了。
//這段代碼只是舉個(gè)例子
SELECT * FROM userinfo WHERE (user_id IN (${ids}))
控制臺(tái)sql語句輸出結(jié)果
==> Preparing:SELECT * FROM fpjy_pauper_info WHERE (user_id IN (81554,5654,55948,48945)) ==> Parameters: <== Total: 4
二、QueryWrapper方法里的in查詢時(shí),入?yún)⒉荒苁亲址?,改成一個(gè)數(shù)組
以上這篇mybatis plus in方法使用說明就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
java框架基礎(chǔ)之SPI機(jī)制實(shí)現(xiàn)及源碼解析
這篇文章主要為大家介紹了java框架基礎(chǔ)之SPI機(jī)制實(shí)現(xiàn)及源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09
簡(jiǎn)單實(shí)現(xiàn)Servlet文件下載功能
這篇文章主要教大家如何簡(jiǎn)單實(shí)現(xiàn)Servlet文件下載功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-09-09
Java應(yīng)用程序的CPU使用率飆升原因詳細(xì)分析
這篇文章主要介紹了Java應(yīng)用程序的CPU使用率飆升原因詳細(xì)分析,在 Java 中,我們使用 JVM 進(jìn)行線程調(diào)度,所以一般來說,線程的調(diào)度有兩種模式:分時(shí)調(diào)度和搶占式調(diào)度,線程和進(jìn)程在阻塞或者等待時(shí),都不會(huì)使用 CPU 資源,需要的朋友可以參考下2024-01-01
JDK版本管理工具jEnv解決不同jdk版本項(xiàng)目
本文主要介紹了JDK版本管理工具jEnv解決不同jdk版本項(xiàng)目,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07
并行Stream與Spring事務(wù)相遇會(huì)發(fā)生什么?
這篇文章主要介紹了并行Stream與Spring事務(wù)相遇會(huì)發(fā)生什么?文章主要解決實(shí)戰(zhàn)中的Bug及解決方案和技術(shù)延伸,具有一定的參考價(jià)值,需要的小伙伴可以參考一下2022-05-05
Java實(shí)現(xiàn)大數(shù)運(yùn)算的實(shí)例代碼
這篇文章主要介紹了Java實(shí)現(xiàn)大數(shù)運(yùn)算的實(shí)例代碼,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2017-06-06

