您好,登錄后才能下訂單哦!
小編給大家分享一下Mybatis plus中使用in查詢出錯的解決方法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
我的情況是這樣的,在使用mybatis plus提供的QueryWrapper方法里的in查詢時,我的參數為類似“1,2,3,4”這樣的字符串
//要查的參數 String masterIds = "81554,5654,55948,48945"; QueryWrapper<FpjyPauperInfo> pauperqw = new QueryWrapper<>(); pauperqw.in("user_id",masterIds); UserInfoService.list(pauperqw);
結果返回的數據與在數據庫查出來的數據不一樣(這是我的情況,不知道你們會不會這樣),我看了控制臺的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
查詢錯誤原因
我就在網上早了一下發現,在使用mybatis plus提供的QueryWrapper方法時,你給它的參數是String類型時,在控制臺上看著是對的,但是他會默認在參數的前面和后面加上單引號,因為在mybatis plus里
的xml配置文件里(類似于UserInfoMapper.xml的文件),給的參數是用 #{參數名} 的方式
//這段代碼只是舉個例子 SELECT * FROM userinfo WHERE (user_id IN (#{ids}))
解決方法
這只是我這種情況的解決方法哦
找到你要使用的對象的xml文件(類似于UserInfoMapper.xml的文件)在里面自定義sql語句代碼,給參數要用 ${參數名} 的方式,不會自定義sql語句可以去網上查查,網上有太多了,在這里我就不寫了。
//這段代碼只是舉個例子 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查詢出錯的解決方法的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。