把Wrappers.lambdaQuery(SysUserRole.class).select(SysUserRole::getUserId).in(SysUserRole::getRoleId, groups);改成mybatis plus 3.3.0写法
时间: 2024-02-27 17:53:38 浏览: 23
Mybatis Plus 3.3.0 版本中,可以使用 LambdaQueryWrapper 类来进行 Lambda 表达式的查询构造。将原来的代码改写为 Mybatis Plus 3.3.0 的写法,可以使用以下代码:
```
LambdaQueryWrapper<SysUserRole> lambdaQuery = new LambdaQueryWrapper<>();
lambdaQuery.select(SysUserRole::getUserId).in(SysUserRole::getRoleId, groups);
List<Object> userIds = sysUserRoleService.listObjs(lambdaQuery);
```
其中,LambdaQueryWrapper 的使用方式和 QueryWrapper 类似,可以通过链式调用方法来构造查询条件。select 方法用于指定查询的返回字段,in 方法用于指定查询的条件,listObjs 方法用于返回符合条件的结果列表。最后将查询结果存储在 userIDs 变量中。
相关问题
把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的写法
在 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); 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` 方法来查询指定字段的结果列表。