今天使用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); } |
示例:
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了