MybatisPlus之条件构造器

条件构造器

简介

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,避免硬编码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值