无法解析 'QueryWrapper' 中的方法 'andIfNotNull'
时间: 2024-10-23 11:08:15 浏览: 14
mybatis-plus QueryWrapper自定义查询条件的实现
5星 · 资源好评率100%
对不起,`QueryWrapper`是MyBatis的动态SQL构建工具,并没有`andIfNotNull`这样的方法。在MyBatis中,如果你想在满足某个条件后再执行另一个条件,通常会使用`lambda表达式`或者`ifPresent`配合`Optional`。但是这里假设你可能是想在`username`已存在时,再检查`password`是否为非空,可以这么写:
```java
UserPojo user = userDao.selectOne(
new QueryWrapper<UserPojo>()
.eq("username", username)
.<UserPojo>lambdaQuery() // 或者使用 .when()
.when(userMapper::existsPasswordByUsername, () -> {
return new QueryWrapper<>()
.eq("username", username)
.eq("password", password);
})
.otherwise(null)); // 或者用 Optional.ofNullable
return user != null && (user.getPassword() == null || user.getPassword().equals(password));
```
这里我们创建了一个新的`QueryWrapper`,如果用户名存在并且有密码,就执行包含密码检查的部分;否则返回null,即表示用户名存在但无密码或不存在。
阅读全文