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

作者:代号:猿a 时间:2023-02-11 14:57:57 

mybatis-plus实现in嵌套sql

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

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

即sql中的 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> queryWrapper) {
    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 sql中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(List states);

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

  • item:别名,就是遍历集合后用于接收数据的参数名,可自由更改

  • collection:集合名字,是你传入的集合参数名字,必须与参数名字相同

  • open:sql开始填充符号,相当于state in ()中的in后开始的第一个符号,即(

  • separator:分隔符,是遍历集合后组成参数的分隔符

  • close:sql结尾填充符号,是state in ()中的in后开始的最后一个符号,即)

来源:https://blog.csdn.net/weixin_44684303/article/details/112709807

标签:mybatis-plus,in,嵌套,sql
0
投稿

猜你喜欢

  • 一个简单的Spring容器初始化流程详解

    2023-11-13 02:10:55
  • java httpclient设置超时时间和代理的方法

    2023-05-10 13:05:24
  • Java SpringBoot高级用法详解

    2021-07-03 18:27:09
  • Spring3 整合MyBatis3 配置多数据源动态选择SqlSessionFactory详细教程

    2023-03-21 21:22:27
  • SpringBoot2.0集成MQTT消息推送功能实现

    2022-02-28 01:55:04
  • 谈谈HttpClient使用详解

    2022-11-03 08:19:02
  • Flutter 使用fluro的转场动画进行页面切换

    2023-06-17 11:49:26
  • Java解析XML格式数据的方法详解

    2022-03-25 09:28:25
  • 关于SpringCloudStream配置问题

    2023-08-08 20:12:00
  • C#中定时任务被阻塞问题的解决方法

    2023-10-27 00:56:02
  • spring hibernate实现动态替换表名(分表)的方法

    2022-06-10 14:20:03
  • Java二维数组与动态数组ArrayList类详解

    2023-07-31 19:53:56
  • 详解Spring MVC CORS 跨域

    2023-11-25 08:04:37
  • HashMap原理及put方法与get方法的调用过程

    2023-10-06 03:53:02
  • java内存优化的方法总结

    2022-12-01 22:25:20
  • C# List集合中获取重复值及集合运算详解

    2022-06-13 17:15:45
  • FeignClient实现接口调用方式(不同参数形式)

    2023-03-06 08:41:39
  • Android使用Intent隐式实现页面跳转

    2022-09-17 05:33:48
  • Android编程简易实现XML解析的方法详解

    2023-12-25 18:51:59
  • C#向word文档插入新段落及隐藏段落的方法

    2022-04-11 16:29:10
  • asp之家 软件编程 m.aspxhome.com