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 类型,或者根据实际情况结合使用它们来满足不同的查询需求。

相关文章
|
5月前
|
设计模式 前端开发 Java
DTO和VO的区别及使用场景详解
DTO和VO的区别及使用场景详解
3860 0
|
12月前
|
SQL Java 数据库连接
在mybatis中,使用map传递参数和进行模糊查询的方法
在mybatis中,使用map传递参数和进行模糊查询的方法
344 0
|
Java 数据库连接 数据库
|
5月前
|
JSON Java 数据格式
Java QueryWrapper基本用法
Java QueryWrapper基本用法
85 2
|
11月前
|
SQL Java 数据库连接
Mybatis使用collection标签实现一对多关联查询,返回结果集list中嵌套list
Mybatis使用collection标签实现一对多关联查询,返回结果集list中嵌套list
424 0
|
设计模式 前端开发 Java
5年老鸟带你区分 VO、PO、DTO、BO、POJO、JavaBean、Entity(有图,记得收藏)
5年老鸟带你区分 VO、PO、DTO、BO、POJO、JavaBean、Entity(有图,记得收藏)
1286 0
5年老鸟带你区分 VO、PO、DTO、BO、POJO、JavaBean、Entity(有图,记得收藏)
|
XML SQL Java
mybatis开发要点-insert主键ID获取和多参数传递
mybatis开发要点-insert主键ID获取和多参数传递
192 0
|
SQL Java 数据库连接
MyBatis快速入门——第二章、参数传递demo(id查询&模糊查询)
MyBatis快速入门——第二章、参数传递demo(id查询&模糊查询)
111 0
MyBatis快速入门——第二章、参数传递demo(id查询&模糊查询)
|
Java 开发者
程序开发准备(定义 VO 类) | 学习笔记
简介:快速学习程序开发准备(定义 VO 类)
210 0
程序开发准备(定义 VO 类) | 学习笔记
|
Java 数据库连接 mybatis
mybatis plus常用的QueryWrapper条件参数
mybatis plus常用的QueryWrapper条件参数
147 0
mybatis plus常用的QueryWrapper条件参数