lambdaQueryWrapper和QueryWrapper 区别和优缺点
时间: 2023-05-18 15:02:44 浏览: 983
lambdaQueryWrapper和QueryWrapper都是MyBatis-Plus中的查询构造器,它们的主要区别在于使用方式不同。QueryWrapper使用链式调用的方式构建查询条件,而lambdaQueryWrapper则使用Lambda表达式的方式构建查询条件。相比较而言,lambdaQueryWrapper更加简洁明了,代码可读性更高,但是QueryWrapper的可扩展性更强,可以更灵活地构建复杂的查询条件。因此,在选择使用哪种查询构造器时,需要根据具体的业务需求和开发习惯进行选择。
相关问题
LambdaQueryWrapper和QueryWrapper区别
LambdaQueryWrapper和QueryWrapper都是MyBatis-Plus框架中的查询封装类,用于构建查询条件。
QueryWrapper是基于字符串的方式来构建查询条件,使用起来相对较繁琐。例如,要构建一个查询条件为age大于等于18的查询语句,可以使用如下代码:
```java
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.ge("age", 18);
```
而LambdaQueryWrapper则是基于Lambda表达式的方式来构建查询条件,使用起来更加简洁和直观。同样的查询条件,使用LambdaQueryWrapper可以写成以下形式:
```java
LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.ge(User::getAge, 18);
```
由于LambdaQueryWrapper使用了Lambda表达式,可以直接引用实体类的属性名,避免了手写字符串的问题,并且在编译期间可以进行类型检查,减少了一些错误发生的可能性。同时,LambdaQueryWrapper还提供了更加丰富的查询方法,如eq、gt、lt等,方便进行复杂的查询操作。
总的来说,LambdaQueryWrapper相比QueryWrapper更加简洁、直观,并且具有更好的类型安全性。因此,在使用MyBatis-Plus框架时,推荐使用LambdaQueryWrapper来构建查询条件。
LambdaQueryWrapper和QueryWrapper区别和具体用法
LambdaQueryWrapper和QueryWrapper都是阿里巴巴MybatisPlus框架中用于动态构建SQL查询条件的工具类,它们的主要区别在于语法和使用场景:
1. **LambdaQueryWrapper**:
- 使用的是Java 8引入的lambda表达式,提供了一种简洁、直观的方式来构造复杂的查询条件,例如`lqw.eq("field", value)`表示字段"field"等于"value"。
- 更加易读和易理解,尤其对于那些熟悉函数式编程风格的开发者来说,可以直接写出类似SQL的条件。
- 适用于对复杂查询需求的处理,如链式调用可以组合多个条件。
2. **QueryWrapper**:
- 是传统的基于方法名和参数的形式,每个方法对应数据库中的操作(比如eq、like等),每个参数对应一个值。
- 编程体验稍微繁琐一些,但语法更贴近于MyBatis原生的DSL,适合对性能有较高要求或者对查询灵活性要求较低的情况。
具体用法示例:
```java
// LambdaQueryWrapper
List<User> users = UserMapper.selectList(lq -> lq.where()
.eq("username", "test")
.gt("age", 18));
// QueryWrapper
List<User> users = UserMapper.selectList(new QueryWrapper<User>().eq("username", "test").gt("age", 18));
```
阅读全文