LambdaQueryChainWrapper是MyBatis-Plus中的一个链式查询封装类,用于构建带有条件的查询语句。
- LambdaQueryChainWrapper
- 可以通过链式调用一系列方法来构建查询条件。这些方法包括eq、ne、gt、ge、lt、le等等,用于设置等于、不等于、大于、大于等于、小于、小于等于等条件。
- 可以用实体类的属性名作为参数,避免直接写数据库表字段名。
- 不支持 分组过滤。没法使用聚合函数。
- 使用场景
- one() 查询一条记录
- list() 查询多条记录
- page() 分页查询
- 示例代码
@Test
public void test1(){
System.out.println("------//链式查询: 使用 Lambda 表达式的链式查询对象--.one");
LambdaQueryChainWrapper<User> lambdaQueryChainWrapper=new LambdaQueryChainWrapper<>(userMapper);
User one3=lambdaQueryChainWrapper.like(User::getName,"up")
.orderByDesc(User::getId)
.last("limit 1")
.one();
System.out.println(one3);
System.out.println("---- //链式查询: 使用 Lambda 表达式的链式查询对象--.list");
LambdaQueryChainWrapper<User> lambdaQueryWrapper1 = new LambdaQueryChainWrapper<>(userMapper);
List<User> userList1=lambdaQueryWrapper1.ge(User::getAge, 1)
.like(User::getName, "up")
.orderByDesc(User::getId)
.list();
userList1.forEach(System.out::println);
System.out.println("---//链式查询: 使用 Lambda 表达式的链式查询对象--分页查询 .page");
int pageNum=1;
int pageSize=2;
LambdaQueryChainWrapper<User> lambdaQueryWrapper2 = new LambdaQueryChainWrapper<>(userMapper);
Page<User> userPage=lambdaQueryWrapper2.ge(User::getAge, 1)
.like(User::getName, "up")
.orderByDesc(User::getId)
.page(new Page<>(pageNum, pageSize));
List<User> userList2 = userPage.getRecords();
long total=userPage.getTotal();
System.out.println("total="+total);
userList2.forEach(System.out::println);
System.out.println("---链式查询不支持分组过滤。直接使用基础的QueryWrapper--分组过滤 groupBy having");
QueryWrapper<User> wrapper=new QueryWrapper<>();
wrapper.select("version","sum(age) as num")
.groupBy("version")
.having("sum(age)>0")
.orderByDesc("num");
List<Map<String,Object>> list=userMapper.selectMaps(wrapper);
list.forEach(System.out::println);
}