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

 更新时间:2023年03月15日 16:27:37   作者:代号:猿a  
这篇文章主要介绍了mybatis-plus之如何实现in嵌套sql问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教

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后开始的最后一个符号,即)

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Spring中的HandlerMapping执行流程详解

    Spring中的HandlerMapping执行流程详解

    这篇文章主要介绍了Spring中的HandlerMapping执行流程详解,HandlerMapping在Spring MVC框架的jar包下面,他是处理映射器,为用户发送的请求找到合适的Handler Adapter,它将会把请求映射为HandlerExecutionChain对象,需要的朋友可以参考下
    2023-08-08
  • Mybatis中如何设置sqlSession自动提交

    Mybatis中如何设置sqlSession自动提交

    在MyBatis中,默认情况下,获取的SqlSession对象不会自动提交事务,这意味着在进行更新、删除或插入等操作后,需要显式调用commit方法来提交事务,但是,可以在获取SqlSession时通过将openSession方法的参数设置为true
    2024-09-09
  • Nacos简介最新收藏版

    Nacos简介最新收藏版

    Nacos 是阿里巴巴推出来的一个新开源项目,这是一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台,Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台,对Nacos相关基本知识感兴趣的朋友一起看看吧
    2023-08-08
  • Java 实战项目锤炼之校园宿舍管理系统的实现流程

    Java 实战项目锤炼之校园宿舍管理系统的实现流程

    读万卷书不如行万里路,只学书上的理论是远远不够的,只有在实战中才能获得能力的提升,本篇文章手把手带你用java+jsp+javaweb+mysql+ajax实现一个校园宿舍管理系统,大家可以在过程中查缺补漏,提升水平
    2021-11-11
  • 深入理解注解与自定义注解的一些概念

    深入理解注解与自定义注解的一些概念

    今天给大家带来的文章是注解的相关知识,本文围绕着注解与自定义注解的一些概念展开,文中详细介绍了这些知识,需要的朋友可以参考下
    2021-06-06
  • Jackson中json格式的字符串与对象的互相转换方式

    Jackson中json格式的字符串与对象的互相转换方式

    这篇文章主要介绍了Jackson中json格式的字符串与对象的互相转换方式,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • SpringBoot+MyBatis+AOP实现读写分离的示例代码

    SpringBoot+MyBatis+AOP实现读写分离的示例代码

    高并发这个阶段,肯定是需要做MySQL读写分离的。本文主要介绍了SpringBoot+MyBatis+AOP实现读写分离的示例代码,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-11-11
  • Java Spring5学习之JdbcTemplate详解

    Java Spring5学习之JdbcTemplate详解

    这篇文章主要介绍了Java Spring5学习之JdbcTemplate详解,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-05-05
  • idea提交文件时如何忽略某些文件的提交

    idea提交文件时如何忽略某些文件的提交

    这篇文章主要介绍了idea提交文件时如何忽略某些文件的提交问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-02-02
  • BCryptPasswordEncoder加密与MD5加密的区别及说明

    BCryptPasswordEncoder加密与MD5加密的区别及说明

    这篇文章主要介绍了BCryptPasswordEncoder加密与MD5加密的区别及说明,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08

最新评论