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è)參考,也希望大家多多支持好吧啦網(wǎng)。
相關(guān)文章:
1. MariaDB數(shù)據(jù)庫的外鍵約束實(shí)例詳解2. SQLite字符串比較時(shí)的大小寫問題解決方法3. 我是如何用2個(gè)Unix命令給MariaDB SQL提速的4. CentOS 7中成功安裝MariaDB的方法教程5. Linux安裝MariaDB數(shù)據(jù)庫的實(shí)例詳解6. mariadb 在低配 VPS 上崩潰問題處理方案7. centos中找回MariaDB數(shù)據(jù)庫root用戶權(quán)限的方法8. SQLite教程(十):內(nèi)存數(shù)據(jù)庫和臨時(shí)數(shù)據(jù)庫9. Windows10系統(tǒng)下安裝MariaDB 的教程圖解10. MongoDB啟動(dòng)報(bào)錯(cuò) 28663 Cannot start server
