您的位置:首页 > 房产 > 建筑 > MybatisPlus之条件构造器

MybatisPlus之条件构造器

2024/12/23 7:41:14 来源:https://blog.csdn.net/2301_80093566/article/details/141749089  浏览:    关键词:MybatisPlus之条件构造器

文章目录

  • 条件构造器
    • 简介
    • 主要的Wrapper类
      • AbstractWrapper
      • QueryWrapper
        • 示例
      • UpdateWrapper
        • 示例
      • QueryWrapper
        • 示例
      • UpdateWrapper
        • 示例
    • 条件构造器的用法
      • QueryWrapper和QueryWrapper
      • UpdateWrapper和UpdateWrapper
      • 注意

条件构造器

简介

MyBatis-Plus 提供了一套强大的条件构造器(Wrapper),用于构建复杂的数据库查询条件。**Wrapper **类允许开发者以链式调用的方式构造查询条件,无需编写繁琐的 SQL 语句,从而提高开发效率并减少 SQL 注入的风险。



主要的Wrapper类

AbstractWrapper

  • 是一个抽象基类,提供了所有 Wrapper 类共有的方法和属性。
  • 定义了条件构造的基本逻辑,包括字段(column)、值(value)、操作符(condition)等。
  • 所有的 QueryWrapperUpdateWrapperLambdaQueryWrapperLambdaUpdateWrapper 都继承自 **AbstractWrapper**


QueryWrapper

  • 专门用于构造查询条件,支持基本的等于、不等于、大于、小于等各种常见操作。
  • 允许以链式调用的方式添加多个查询条件,并且可以组合使用 andor 逻辑。

示例
// 创建一个 QueryWrapper 对象,用于构造查询条件
QueryWrapper<User> queryWrapper = new QueryWrapper<>();// 添加查询条件:user_name 等于 "Alice"
queryWrapper.eq("user_name", "Alice")// 添加查询条件:age 大于等于 18.ge("age", 18)// 添加查询条件:模糊查询,email 包含 "example.com" .like("email", "example.com");// 使用构造的条件查询用户列表
List<User> users = userMapper.selectList(queryWrapper);



UpdateWrapper

  • 用于构造更新条件,可以在更新数据时指定条件。
  • QueryWrapper 类似,它也支持链式调用和逻辑组合。
  • 使用 UpdateWrapper 可以在不创建实体对象的情况下,直接设置更新字段和条件。

示例
// 创建一个 UpdateWrapper 对象,用于构造更新条件
UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();// 添加查询条件:user_name 等于 "Alice"
updateWrapper.eq("user_name", "Alice")// 设置 email 字段为 "newemail@example.com".set("email", "newemail@example.com");// 根据构造的条件更新用户信息
int rows = userMapper.update(null, updateWrapper);



QueryWrapper

  • 一个基于 Lambda 表达式的查询条件构造器,通过 Lambda 表达式来引用实体类的属性,从而避免了硬编码字段名。
  • 提高了代码的可读性和可维护性,尤其是在字段名可能发生变化的情况下。

示例
// 创建一个 LambdaQueryWrapper 对象,用于构造查询条件
LambdaQueryWrapper<User> lambdaQuery = new LambdaQueryWrapper<>();// 添加查询条件:userName 等于 "Alice"
lambdaQuery.eq(User::getUserName, "Alice")// 添加查询条件:age 大于等于 18.ge(User::getAge, 18)// 添加查询条件:email 包含 "example.com".like(User::getEmail, "example.com");// 使用构造的条件查询用户列表
List<User> users = userMapper.selectList(lambdaQuery);



UpdateWrapper

  • 类似于 LambdaQueryWrapperLambdaUpdateWrapper 是基于 Lambda 表达式的更新条件构造器。
  • 允许使用 Lambda 表达式来指定更新字段和条件,同样避免了硬编码字段名的问题。

示例
// 创建一个 LambdaUpdateWrapper 对象,用于构造更新条件
LambdaUpdateWrapper<User> lambdaUpdate = new LambdaUpdateWrapper<>();// 添加查询条件:userName 等于 "Alice"
lambdaUpdate.eq(User::getUserName, "Alice")// 设置 email 字段为 "newemail@example.com".set(User::getEmail, "newemail@example.com");// 根据构造的条件更新用户信息
int rows = userMapper.update(null, lambdaUpdate);


条件构造器的用法


QueryWrapper和QueryWrapper

通常用来构建selectdeleteupdatewhere条件部分。


UpdateWrapper和UpdateWrapper

通常只有在set语句比较特殊才使用。


注意

尽量使用LambdaQueryWrapperLambdateWrapper,避免硬编码。

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com