wrapper.lambda().ge(Entity::getAge, 18) .and(wrapper.lambda().lt(Entity::getGrade, 80));怎么改成查找age比grade大的数据
时间: 2024-06-03 11:10:01 浏览: 75
可以改成wrapper.lambda().ge(Entity::getAge, wrapper.lambda().prop(Entity::getGrade)).and(wrapper.lambda().ne(Entity::getGrade, null));,这样可以查找age比grade大且grade不为null的数据。
相关问题
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();wrapper.gt(User::getAge, 18); // 查询年龄大于等于18的用户wrapper.lt(User::getSalary, 500); // 查询薪水小于500的用户
这段代码使用了 MyBatis-Plus 中的 LambdaQueryWrapper 进行查询。LambdaQueryWrapper 可以通过 lambda 表达式构建查询条件,使得代码更加简洁明了。
这里的代码表示查询年龄大于等于18且薪水小于500的用户。其中 gt() 方法表示大于,lt() 方法表示小于。User::getAge 和 User::getSalary 是 lambda 表达式,分别表示获取 User 对象中的 age 和 salary 属性。
需要注意的是,这段代码只是构建了查询条件,还需要调用相应的 MyBatis-Plus 查询方法才能执行查询操作。例如:
```
List<User> userList = userMapper.selectList(wrapper);
```
表示使用 wrapper 中的查询条件执行查询,返回符合条件的 User 对象列表。
wrapper.lambda().eq 和 wrapper.eq 的区别
`wrapper.lambda().eq` 和 `wrapper.eq` 是 MyBatis-Plus 中用于构建查询条件的两种方式。主要区别如下:
1. 使用Lambda表达式时,可以在编译时检查字段名称的正确性,避免在运行时出现字段名错误的问题。
2. 使用Lambda表达式时,可以避免手动输入字符串字段名带来的错误和不便。
3. 使用Lambda表达式时,可以通过IDE的代码提示功能,方便地查看和选择需要的字段。
4. 使用Lambda表达式时,可以进行链式调用,可以更加方便地构建复杂的查询条件。
举个例子:
```java
// 使用 wrapper.eq
QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("name", "张三");
// 使用 wrapper.lambda().eq
LambdaQueryWrapper<User> lambdaWrapper = new LambdaQueryWrapper<>();
lambdaWrapper.eq(User::getName, "张三");
```
以上两种方式都是用于构建查询条件中的等值条件,但是使用Lambda表达式可以更加方便和安全。
阅读全文