LambdaQueryWrapper 和 QueryWrapper区别及案例

简介: LambdaQueryWrapper 和 QueryWrapper区别及案例

LambdaQueryWrapper 和 QueryWrapper 是 MyBatis-Plus(简称 MP)框架中用于构建查询条件的两种常用 Wrapper。它们的主要区别如下:

1. 写法和表达方式不同:

  •  QueryWrapper:使用传统的字符串形式构建查询条件,通过支持链式调用的方式,可以方便地拼接多个查询条件。
  •   LambdaQueryWrapper:使用 Lambda 表达式构建查询条件,可以通过实体类的属性和方法来安全地编写查询条件,减少犯错和代码冗余。

2. 类型安全和编译时检查:

  •    QueryWrapper:由于是字符串形式的条件拼接,编译时无法检查其中的错误和类型不匹配问题,所以需要开发人员自行保证查询条件的正确性。
  •    LambdaQueryWrapper:基于 Lambda 表达式构建查询条件,可以在编译阶段进行类型检查,编译器可以帮助检测属性名等错误,减少运行时出错的可能性。

3. 支持实体属性的引用方式:

  •    QueryWrapper:需要手动通过字符串形式指定实体类的属性名。
  •    LambdaQueryWrapper:可以直接使用实体类的属性名,减少手写字符串的风险和不便。

  4.举例:

 假设有一个 User 实体类,包含 id、name、age 和 gender 等属性。

1.使用 QueryWrapper:
QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.ge("age", 18).eq("gender", "女性");
List<User> userList = userMapper.selectList(queryWrapper);
2.使用 LambdaQueryWrapper:
LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();
lambdaQueryWrapper.ge(User::getAge, 18).eq(User::getGender, "女性");
List<User> userList = userMapper.selectList(lambdaQueryWrapper);

总结:

  需要注意的是,在某些特殊情况下,特别是涉及到复杂的查询逻辑、关联表查询等高级查询需求时,QueryWrapper 的灵活性会更加适用。而在普通的单表查询中,LambdaQueryWrapper 的简洁性和类型安全性更加优势。

  在实际使用中,可以根据具体的需求和个人偏好选择适合的 Wrapper 类型,或者根据实际情况结合使用它们来满足不同的查询需求。

相关文章
|
8月前
|
Java 数据库连接 数据库
Mybatis-plus中的QueryWrapper的多种用法!(总结)
Mybatis-plus中的QueryWrapper的多种用法!(总结)
1011 0
|
8月前
|
设计模式 前端开发 Java
DTO和VO的区别及使用场景详解
DTO和VO的区别及使用场景详解
4821 0
|
Java 数据库连接 数据库
|
Java 数据库连接 mybatis
【Mybatis用法】Mybatis框架中一对一,一对多association和collection的使用举例方法
【Mybatis用法】Mybatis框架中一对一,一对多association和collection的使用举例方法
92 0
|
2月前
|
SQL Java 数据库连接
mybatisplus QueryWrapper or写法
# MyBatis-Plus QueryWrapper的OR写法详解 MyBatis-Plus是一款基于MyBatis的增强工具,提供了丰富的简化操作,使开发者能更高效地进行数据库操作。`QueryWrapper`是MyBatis-Plus中用于构建查询条件的一个核心类,支持多种条件组合,包括AND和OR条件。本文将详细介绍如何使用 `QueryWrapper`实现OR条件的查询。 ## QueryWrapper简介 `QueryWrapper`用于构建动态SQL查询条件,它封装了各种条件构造方法,使得查询条件的构建更加简洁和直观。`QueryWrapper`中提供了丰富的方法来支持多
121 0
|
8月前
|
SQL 缓存 安全
深入解析MyBatis-Plus LambdaQueryWrapper与QueryWrapper:高效数据查询的秘密
深入解析MyBatis-Plus LambdaQueryWrapper与QueryWrapper:高效数据查询的秘密
8563 2
|
7月前
|
SQL IDE Java
通过一次性能优化,再次记牢了mybatisplus的QueryWrapper、LambdaQueryWrapper、AbstractWrapper这三者之间的关系...
本文描述了一次针对SpringBoot应用中MyBatisPlus分页查询的性能优化过程。在优化时,作者重写了BaseMapper的`selectPage`方法,通过`Wrapper`的`between`操作添加了ID区间限制以提升SQL执行效率。然而,由于在业务服务类中循环调用分页查询时未每次都创建新的`Wrapper`对象,导致`id BETWEEN ? AND ?`条件重复出现在SQL中。那么,如何解决这个问题呢?
594 5
|
SQL 数据库
MyBatisPlus 之 条件查询 <条件构造器>
MyBatisPlus 之 条件查询 <条件构造器>
183 0
|
SQL Java 数据库连接
Mybatis使用collection标签实现一对多关联查询,返回结果集list中嵌套list
Mybatis使用collection标签实现一对多关联查询,返回结果集list中嵌套list
598 0
|
XML Java 关系型数据库
MyBatisPlus基本入门------连接数据库查询 -----BaseMapper基本操作
MyBatisPlus基本入门------连接数据库查询 -----BaseMapper基本操作