开发者

mybatis-plus之如何实现in嵌套sql

开发者 https://www.devze.com 2023-03-16 10:37 出处:网络 作者: 代号:猿a
目录myBATis-plus实现in嵌套sqlmybatis-plus sql中in的用法总结mybatis-plus实现in嵌套sql 今天使用jeegboot看源码时发现用户权限部分的代码
目录
  • myBATis-plus实现in嵌套sql
  • mybatis-plus sql中in的用法
  • 总结

mybatis-plus实现in嵌套sql

今天使用jeegboot看源码时发现用户权限部分的代码

条件查询的inSql方法的用法:

即sq开发者_JAVA学习l中的 in (select column from table where 条件) 用法

/**
* 根据部门 Id 和 QueryWrapper 查询
*
* @param page
* @param departId
* @param queryWrapper
* @return
*/
@Override
public IPage<SysUser> getUserByDepartIdAndQueryWrapper(Page<SysUser> page, String departId, QueryWrapper<SysUser> queryWrap编程客栈per) {
 LambdaQueryWrapper<SysUser> lambdaQueryWrapper = queryWrapper.lambda();

 lambdaQueryWrapper.eq(SysUser::getDelFlag, "0");
   lambdaQueryWrapper.inSql(SysUser::getId, "SELECT user_id FROM sys_user_depart WHERE dep_id = '" + departId + "'");

   return userMapper.selectPage(page, lambdaQueryWrapper);
}

mybatis-plus sqwww.devze.coml中in的用法

示例:

@Select("<script>" +
      "SELECT * FROM node mn " +
      "WHERE n.state IN " +
      "<foreach item = 'state' collection = 'states' index = 'index' open = '(' separator = ',' close = ')'>" +
      "#{state}" +
      "</foreach>" +
      "</script>")
      List<Node> queryIdAndPlanDay(Liswww.devze.comt states);

SQL语句需要使用<script></script>包起来,接着使用foreach进行循环,再将循环后得到的值放入sql中就ok了

  • item:别名,就是遍历集合后用于接收数据的参数名,可自由更改
  • collection:集合名字,是你传入的集合参数名字,必须与参数名字相同
  • open:sql开始填充符号,相当于state in ()中的in后开始的第一个符号,即(
  • separator:分隔符,是遍历集合后组成参数的分隔符
  • close:sql结尾填充编程客栈符号,是state in ()中的in后开始的最后一个符号,即)

总结

以上为个人经验,希编程客栈望能给大家一个参考,也希望大家多多支持我们。

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号