1. 程式人生 > 程式設計 >Mybatis plus中使用in查詢出錯如何解決

Mybatis plus中使用in查詢出錯如何解決

不想看我bb的直接點上面的 ‘'解決方法‘'

我的情況是這樣的,在使用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,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,48945))
==> Parameters:
<== Total: 4

總結

到此這篇關於Mybatis plus中使用in查詢出錯如何解決的文章就介紹到這了,更多相關Mybatis plus使用in查詢出錯內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!