优化 这段代码 LambdaQueryWrapper<AuthRoleInfo> userTestWrapper = Wrappers.<AuthRoleInfo>lambdaQuery() .orderByAsc(AuthRoleInfo::getRoleId); userTestWrapper.eq(AuthRoleInfo::getLogIcdel,"0"); if(!StringUtils.isBlank(roleManagerSearch.getRoleName())){ userTestWrapper.like(AuthRoleInfo::getRoleName,roleManagerSearch.getRoleName()); } if(!StringUtils.isBlank(roleManagerSearch.getRoleCode())){ userTestWrapper.like(AuthRoleInfo::getRoleCode,roleManagerSearch.getRoleCode()); } Page<Object> objects = PageHelper.startPage(roleManagerSearch.getPage(), roleManagerSearch.getPageSize()); List<AuthRoleInfo> roleManagerList = roleManagerMapper.selectList(userTestWrapper);
时间: 2023-03-31 19:04:35 浏览: 235
这段代码可以进行一些优化,例如可以将 lambdaQuery() 方法的返回值存储在一个变量中,避免多次调用该方法;可以使用 StringUtils 的 isNotBlank() 方法代替 !StringUtils.isBlank();可以使用 lambda 表达式的 and() 方法将多个条件连接起来,避免多次调用 eq() 和 like() 方法。另外,可以考虑使用 MyBatis-Plus 提供的分页插件来实现分页查询,避免使用 PageHelper。
相关问题
把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<Room> wrapper = Wrappers.<Room>lambdaQuery();和 LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();的区别?
这两行代码的区别在于泛型类型不同,`Room` 和 `User` 分别是不同的实体类。另外,第一行代码中使用了静态方法 `Wrappers.lambdaQuery()`,而第二行代码中直接使用了 `LambdaQueryWrapper` 的构造方法。
`Wrappers.lambdaQuery()` 方法返回一个通用的 `Wrapper` 对象,而 `LambdaQueryWrapper` 则是 `Wrapper` 的一个实现类,用于构建查询条件。`LambdaQueryWrapper` 泛型参数中传入的是实体类类型,即 `Room` 或 `User`。
因此,第一行代码创建了一个 `Room` 实体类的查询条件对象,而第二行代码创建了一个 `User` 实体类的查询条件对象。
阅读全文