QueryWrapper和LambdaQueryWrapper的区别
时间: 2023-08-17 18:13:05 浏览: 483
QueryWrapper和LambdaQueryWrapper都是MyBatis-Plus框架中的查询条件封装类,用于构建查询条件。
区别在于:
1. LambdaQueryWrapper是QueryWrapper的升级版,使用Lambda表达式来构建查询条件,更加简洁和类型安全。LambdaQueryWrapper可以避免手写字符串字段名,可以直接使用实体类的属性名。
2. QueryWrapper使用的是字符串字段名,需要手动输入字段名,容易出错。
3. LambdaQueryWrapper支持链式调用,可以更加灵活地拼接多个查询条件。而QueryWrapper则需要每次调用方法时创建新的实例。
4. LambdaQueryWrapper在编译时能够进行静态检查,减少运行时错误。
总的来说,LambdaQueryWrapper相比QueryWrapper更加方便、简洁和类型安全,推荐使用LambdaQueryWrapper来构建查询条件。
相关问题
QueryWrapper和LambdaQueryWrapper
QueryWrapper和LambdaQueryWrapper都是MyBatis-Plus中的查询构造器,于构建SQL查询条件。
QueryWrapper是一种普通的方法链式调用来构建查询条件,需要手动指定实体类的属性名,不支持类型安全的Lambda表达式。示例代码如下:
```java
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", "Tom")
.like("email", "@gmail.com")
.in("age", Arrays.asList(18, 20, 25));
List<User> userList = userMapper.selectList(queryWrapper);
```
LambdaQueryWrapper是一种类型安全的Lambda表达式构建查询条件的方式,可以避免手动指定实体类的属性名。示例代码如下:
```java
LambdaQueryWrapper<User> user= new LambdaQueryWrapper<>();
user.eq(User::getState, 1);
user.eq(User::getEnable, 1);
List<User> userList = userMapper.selectList(user);
```
MybatisPlus的QueryWrapper和lambdaQueryWrapper的区别
MybatisPlus的QueryWrapper和lambdaQueryWrapper的区别在于:
1. QueryWrapper是使用字符串作为查询条件,而lambdaQueryWrapper是使用Lambda表达式作为查询条件。
2. QueryWrapper需要手动拼接SQL语句,而lambdaQueryWrapper可以通过Lambda表达式自动生成SQL语句。
3. QueryWrapper的查询条件不够直观,而lambdaQueryWrapper的查询条件更加清晰易懂。
4. QueryWrapper的查询条件容易出现拼写错误,而lambdaQueryWrapper的查询条件可以通过IDE的自动补全功能避免拼写错误。
5. QueryWrapper的查询条件不支持类型安全检查,而lambdaQueryWrapper的查询条件可以通过编译器的类型检查来避免类型错误。
总之,lambdaQueryWrapper是MybatisPlus中更加推荐使用的查询条件构造器,它可以提高代码的可读性和可维护性。
阅读全文