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
投稿

猜你喜欢

  • java实现轻量型http代理服务器示例

    2021-10-05 18:14:20
  • Spring Boot中利用JavaMailSender发送邮件的方法示例(附源码)

    2023-05-13 02:13:08
  • 迅速掌握Java容器中常用的ArrayList类与Vector类用法

    2022-12-16 16:18:47
  • C# 定时器定时更新的简单实例

    2023-01-08 12:45:50
  • java中关于深拷贝的几种方式总结

    2023-12-13 17:39:41
  • Springboot内置tomcat配置虚拟路径过程解析

    2021-12-21 06:06:03
  • 简单分析针对ARM平台的C语言程序的编译问题

    2021-06-19 21:59:13
  • C# 对PDF文档加密、解密(基于Spire.Cloud.SDK for .NET)

    2021-11-23 05:37:26
  • Java运行时数据区概述详解

    2023-10-08 07:00:10
  • Java如何跳出当前多重循环你知道吗

    2022-12-17 02:22:17
  • C#计算程序执行过程花费时间的方法

    2022-08-07 08:44:53
  • SpringBoot封装JDBC的实现步骤

    2022-09-13 04:04:31
  • 解析Java线程同步锁的选择方法

    2023-02-08 11:02:32
  • java程序代码与文本对比实用工具简介

    2023-07-18 22:57:05
  • Android DownloadMananger管理器实现下载图片功能

    2022-05-06 03:20:24
  • Android自定义ViewPagerIndicator实现炫酷导航栏指示器(ViewPager+Fragment)

    2021-11-05 13:16:12
  • SpringCloud实现Eureka服务注册与发现

    2021-08-16 04:00:44
  • Android如何获取QQ与微信的聊天记录并保存到数据库详解

    2023-04-12 06:54:03
  • Unity UI实现循环播放序列图

    2023-03-14 15:51:10
  • C#读取文件MD5值的实现代码

    2021-10-08 18:01:39
  • asp之家 软件编程 m.aspxhome.com