不想看我bb的直接點上面的 ‘'解決方法‘'
我的情況是這樣的,在使用mybatis plus提供的QueryWrapper方法里的in查詢時,我的參數為類似“1,2,3,4”這樣的字符串
1
2
3
4
5
6
7
|
//要查的參數 String masterIds = "81554,5654,55948,48945" ; QueryWrapper<FpjyPauperInfo> pauperqw = new QueryWrapper<>(); pauperqw.in( "user_id" ,masterIds); UserInfoService.list(pauperqw); |
結果返回的數據與在數據庫查出來的數據不一樣(這是我的情況,不知道你們會不會這樣),我看了控制臺的sql代碼
1
2
3
4
|
==> 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 |
查詢錯誤原因
我就在網上早了一下發現,在使用mybatis plus提供的QueryWrapper方法時,你給它的參數是String類型時,在控制臺上看著是對的,但是他會默認在參數的前面和后面加上單引號,因為在mybatis plus里
的xml配置文件里(類似于UserInfoMapper.xml的文件),給的參數是用 #{參數名} 的方式
1
2
|
//這段代碼只是舉個例子 SELECT * FROM userinfo WHERE (user_id IN (#{ids})) |
解決方法
這只是我這種情況的解決方法哦
找到你要使用的對象的xml文件(類似于UserInfoMapper.xml的文件)在里面自定義sql語句代碼,給參數要用 ${參數名} 的方式,不會自定義sql語句可以去網上查查,網上有太多了,在這里我就不寫了。
1
2
|
//這段代碼只是舉個例子 SELECT * FROM userinfo WHERE (user_id IN (${ids})) |
控制臺sql語句輸出結果
==> Preparing:SELECT * FROM fpjy_pauper_info WHERE (user_id IN (81554,5654,55948,48945))
==> Parameters:
<== Total: 4
總結
到此這篇關于Mybatis plus中使用in查詢出錯如何解決的文章就介紹到這了,更多相關Mybatis plus使用in查詢出錯內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!
原文鏈接:https://blog.csdn.net/m0_48930368/article/details/107786932