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

相关文章
|
Java 数据库连接 数据库
Mybatis-plus中的QueryWrapper的多种用法!(总结)
Mybatis-plus中的QueryWrapper的多种用法!(总结)
3260 0
|
SQL 缓存 安全
深入解析MyBatis-Plus LambdaQueryWrapper与QueryWrapper:高效数据查询的秘密
深入解析MyBatis-Plus LambdaQueryWrapper与QueryWrapper:高效数据查询的秘密
15007 2
|
10月前
|
JavaScript 前端开发 API
Vue 2 与 Vue 3 的区别:深度对比与迁移指南
Vue.js 是一个用于构建用户界面的渐进式 JavaScript 框架,在过去的几年里,Vue 2 一直是前端开发中的重要工具。而 Vue 3 作为其升级版本,带来了许多显著的改进和新特性。在本文中,我们将深入比较 Vue 2 和 Vue 3 的主要区别,帮助开发者更好地理解这两个版本之间的变化,并提供迁移建议。 1. Vue 3 的新特性概述 Vue 3 引入了许多新特性,使得开发体验更加流畅、灵活。以下是 Vue 3 的一些关键改进: 1.1 Composition API Composition API 是 Vue 3 的核心新特性之一。它改变了 Vue 组件的代码结构,使得逻辑组
2216 0
|
Java 编译器 Spring
面试突击78:@Autowired 和 @Resource 有什么区别?
面试突击78:@Autowired 和 @Resource 有什么区别?
17376 7
|
SQL 存储
数据权限就该这么实现(实践篇),yyds!
数据权限就该这么实现(实践篇),yyds!
1392 0
|
SQL XML Java
【MyBatis】 MyBatis与MyBatis-Plus的区别
【MyBatis】 MyBatis与MyBatis-Plus的区别
8002 0
【MyBatis】 MyBatis与MyBatis-Plus的区别
Mybatis-Plus实现Service封装
Mybatis-Plus实现Service封装
663 1
|
SQL 安全 Java
MyBatis LambdaQueryWrapper的概念以及具备那些写法
【4月更文挑战第2天】MyBatis是一个流行的Java持久层框架,它提供了与数据库交互的简化方法。而MyBatis Plus是一个在MyBatis基础上的增强工具,它引入了很多便利的特性,其中之一就是LambdaQueryWrapper。这个类是一个基于Java 8的Lambda表达式的查询构造器,使得构建查询语句变得更加简洁和类型安全。
753 3
|
Java Spring 容器
深入理解@EnableAspectJAutoProxy的力量
深入理解@EnableAspectJAutoProxy的力量
1250 0

热门文章

最新文章