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后开始的最后一个符号,即)
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
java String、StringBuilder和StringBuffer的区别详解
这篇文章主要介绍了java String、StringBuilder和StringBuffer的区别详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧2020-01-01SpringBoot使用AES对JSON数据加密和解密的实现方法
这篇文章主要介绍了SpringBoot使用AES对JSON数据加密和解密的实现方法,文章通过代码示例介绍的非常详细,对我们的学习或工作有一定的帮助,需要的朋友可以参考下2023-08-08SpringCloud maven-assembly-plugin 多级目录打包的实现
本文主要介绍了SpringCloud maven-assembly-plugin 多级目录打包的实现,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下2021-10-10
最新评论