把LambdaQueryWrapper<SysUserRole> lqw = Wrappers.lambdaQuery(SysUserRole.class).select(SysUserRole::getUserId).in(SysUserRole::getRoleId, groups); List<Long> userIds = SimpleQuery.list(lqw, SysUserRole::getUserId);改成mybatis plus3.3.0的写法
时间: 2024-02-27 18:57:20 浏览: 92
在 MyBatis Plus 3.3.0 中,可以这样重写上述代码:
```
List<Long> userIds = new LambdaQueryChainWrapper<>(sysUserRoleMapper)
.select(SysUserRole::getUserId)
.in(SysUserRole::getRoleId, groups)
.list()
.stream()
.map(SysUserRole::getUserId)
.collect(Collectors.toList());
```
其中,`sysUserRoleMapper` 是 `SysUserRole` 的 Mapper 接口,需要通过依赖注入或者其他方式获取。此外,`LambdaQueryChainWrapper` 是 MyBatis Plus 3.3.0 中新增的链式查询 Wrapper,可以方便地进行 Lambda 表达式查询,可以取代旧版本中的 `LambdaQueryWrapper`。
相关问题
把 LambdaQueryWrapper<SysUser> lqw = Wrappers.lambdaQuery(SysUser.class).select(SysUser::getUserId).in(SysUser::getDeptId, groups); List<Long> userIds = SimpleQuery.list(lqw, SysUser::getUserId);改成mybatis plus3.3.0写法
在 MyBatis Plus 3.3.0 中,可以这样写:
```
List<Long> userIds = new LambdaQueryChainWrapper<>(sysUserMapper)
.select(SysUser::getUserId)
.in(SysUser::getDeptId, groups)
.list()
.stream()
.map(SysUser::getUserId)
.collect(Collectors.toList());
```
其中,`sysUserMapper` 是 SysUserMapper 接口的实例,`LambdaQueryChainWrapper` 是 MyBatis Plus 新增的 LambdaQuery 链式查询的实现类。这里使用了 `map` 函数将 `List<SysUser>` 转换为 `List<Long>`。
把LambdaQueryWrapper<SysUser> lqw = Wrappers.lambdaQuery(SysUser.class).select(SysUser::getUserId).in(SysUser::getDeptId, groups); userIds = SimpleQuery.list(lqw, SysUser::getUserId);改成mybatis plus3.3.0写法
在 Mybatis Plus 3.3.0 中,可以使用 LambdaQueryWrapper 和 QueryWrapper 来构造查询条件。对于这个问题,可以按照以下方式重写:
```java
LambdaQueryWrapper<SysUser> wrapper = Wrappers.lambdaQuery(SysUser.class)
.select(SysUser::getUserId)
.in(SysUser::getDeptId, groups);
List<Object> userIds = sysUserMapper.selectObjs(wrapper);
```
这里使用了 LambdaQueryWrapper 的 lambda 表达式方法来构造查询条件,其中 `SysUser::getUserId` 表示指定查询结果为 `userId` 字段,`sysUserMapper` 是 `SysUser` 对应的 Mybatis Mapper。最后使用 `selectObjs` 方法来查询指定字段的结果列表。
阅读全文