mybatisplus多条件查询,如果条件为空则不拼接,否则拼接
时间: 2023-08-16 12:24:08 浏览: 273
在 Mybatisplus 中进行多条件查询时,可以使用 QueryWrapper 类来辅助构建查询条件。如果希望只有当某个条件不为空时才进行拼接查询条件,可以使用 QueryWrapper 的 lambda 表达式的方式。
例如,假设要查询用户表中年龄在 18 到 30 之间、性别为男的用户,如果性别条件为空,则不拼接性别条件。代码如下:
```
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.lambda().between(User::getAge, 18, 30);
if (StringUtils.isNotEmpty(gender)) {
queryWrapper.lambda().eq(User::getGender, gender);
}
List<User> userList = userMapper.selectList(queryWrapper);
```
在上述代码中,使用了 QueryWrapper 的 lambda 表达式来构建查询条件,其中:
- `queryWrapper.lambda().between(User::getAge, 18, 30)` 表示年龄在 18 到 30 之间;
- `queryWrapper.lambda().eq(User::getGender, gender)` 表示性别为指定的值,其中 `gender` 是传入的性别参数,如果为空则不拼接此条件。
最后,调用 `userMapper.selectList(queryWrapper)` 方法执行查询并返回符合条件的用户列表。
阅读全文