QueryWrapper和LambdaQueryWrapper都是MyBatis-Plus提供的查询条件构造器,用于构建SQL查询条件。它们的区别在于LambdaQueryWrapper支持Lambda表达式,可以更加方便地编写条件查询语句。

使用QueryWrapper时,需要手动编写SQL查询条件,如:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "Tom").gt("age", 18);
List<User> userList = userMapper.selectList(queryWrapper);

使用LambdaQueryWrapper时,可以使用Lambda表达式来构建查询条件,如:

LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.eq(User::getName, "Tom").gt(User::getAge, 18);
List<User> userList = userMapper.selectList(lambdaQueryWrapper);

LambdaQueryWrapper的优点在于:

  1. 编写更加简洁的查询条件语句,可读性更高。
  2. 编译时检查Lambda表达式的正确性,避免运行时出现错误。

但是,LambdaQueryWrapper也有一些限制:

  1. 不支持所有的SQL函数和操作符。
  2. 不能使用自定义的SQL查询条件。

因此,在实际使用中,需要根据具体的业务场景选择使用QueryWrapper还是LambdaQueryWrapper。