mybatis-plus 使用In查詢


第一種
在Dao接口中自定義SQL查詢,拼接xml字符串

UserDaoMapper.java

@Select("<script>"
+"select * from user where id in"
+ "<foreach item='id' index='index' collection='ids' open='(' separator=',' close=')'>"
+ "#{id}"
+ "</foreach>"
+ "</script>")
List<User> getUserList(@Param("ids") List<String> ids);

第二種
在Mapper.xml中自定義SQL

UserDaoMapper.xml

<delete id="deleteUserByIds" parameterType="String">
delete from t_user where user_id in
<foreach collection="array" item="userId" open="(" separator="," close=")">
#{userId}
</foreach>
</delete>

UserDaoMapper.java

/**
* 批量刪除用戶
*
* @param ids 需要刪除的數據
* @return 結果
*/
public int deleteOperLogByIds(String[] ids);

備注:

標簽的collection參數的設置問題,如果參數像上面的例子這樣用@Param注解表明了,則用@Param標明的值,否則:

如果傳入的是單參數且參數類型是一個List的時候,collection屬性值為list
如果傳入的是單參數且參數類型是一個array數組的時候,collection的屬性值為array
如果傳入的參數是多個的時候,我們就需要把它們封裝成一個Map了,當然單參數也可以,collection的屬性值為Map的key

第三種
List<User> list = this.baseMapper.selectList(new LambdaQueryWrapper<User>().in(User::getUserId,new String[]{"11","22","33","44"}));
List<User> list2 = this.baseMapper.selectList(new LambdaQueryWrapper<User>().in(User::getUserId,new ArrayList<String>(){{this.add("11");this.add("22")}}));

備注:

QueryWrapper + lambda = LambdaQueryWrapper


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM