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

Tricia ·
更新时间:2024-11-13
· 1329 次阅读

目录

mybatis-plus实现in嵌套sql

mybatis-plus sql中in的用法

总结

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

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持软件开发网。



SQL IN mybatis

需要 登录 后方可回复, 如果你还没有账号请 注册新账号
相关文章