java
主页 > 软件编程 > java >

mybatis-plus之实现in嵌套sql的教程

2024-02-08 | 佚名 | 点击:

mybatis-plus实现in嵌套sql

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

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

即sql中的 in (select column from table where 条件) 用法

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

/**

* 根据部门 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的用法

示例:

1

2

3

4

5

6

7

8

@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了

原文链接:
相关文章
最新更新