mybatis-plus条件构造器的使用

引言

       MyBatis-Plus 是 MyBatis 的增强工具,在 MyBatis 的基础上提供了更便捷的使用方式和更丰富的功能。其中,条件构造器是 MyBatis-Plus 中一个非常实用的功能,它可以帮助我们动态构建 SQL 查询条件,避免手动拼接 SQL 语句,提高了开发效率。

条件构造器关系

     条件构造器各个类之间的关系如上图所示,其中绿色类为抽象类,蓝色类为其子类,可以创建new对象。

条件构造器的使用

        在mybatis的使用中,我们常常需要手写大量SQL语句,耗费了太多时间,而mybatis-plus的发明正是帮助我们在开发过程中减少SQL语句的书写,其中经常出现的参数wrapper正是条件构造器,条件构造器就相当于SQL语句中的条件where部分,如QueryWrapper和 UpdateWrapper,就分别是用于生成查和改 的 sql 的 where 条件。

条件构造器使用步骤

1.导入相关依赖 在项目中引入 MyBatis-Plus 相关的依赖,在 Maven 项目中可以在 pom.xml 文件中添加如下依赖:

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus</artifactId>
    <version>{version}</version>
</dependency>

2.使用条件构造器 在需要构建查询条件的地方,可以通过 LambdaQueryWrapper 或者 QueryWrapper 来创建条件构造器对象,然后调用其方法来构建查询条件。例如:

// 通过 LambdaQueryWrapper 创建条件构造器
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(User::getAge, 30)
       .like(User::getName, "Smith")
       .orderByDesc(User::getCreateTime);

// 执行查询
List<User> userList = userMapper.selectList(wrapper);

3.示例

假设有一个名为 User 的实体类,包含 id、name、age 和 create_time 等字段。我们可以使用条件构造器来构建查询条件,示例如下:

// 创建 LambdaQueryWrapper 对象
LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();

// 构建查询条件
wrapper.eq(User::getAge, 30)  // 年龄等于 30
       .like(User::getName, "Smith")  // 姓名包含 "Smith"
       .orderByDesc(User::getCreateTime);  // 根据创建时间降序排序

// 执行查询
List<User> userList = userMapper.selectList(wrapper);

 QueryWrapper的使用

QueryWrapper 用于构建查询条件,例如 eq(等于)、ne(不等于)、like(模糊查询)等条件。使用 QueryWrapper 可以将查询条件动态地添加到查询语句中,而无需手动编写复杂的 SQL 语句。以下是一个简单的示例:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("age", 25).like("name", "张");
List<User> userList = userMapper.selectList(queryWrapper);

在上面的示例中,queryWrapper.eq("age", 25) 表示添加一个等于条件queryWrapper.like("name", "张") 则表示添加一个模糊查询条件。最后,使用 userMapper.selectList(queryWrapper) 执行查询操作。

UpdateWrapper的使用

UpdateWrapper 用于构建更新条件,例如 set(设置值)、eq(等于)、ne(不等于)等条件。使用 UpdateWrapper 可以将更新条件动态地添加到更新语句中,而无需手动编写复杂的 SQL 语句。以下是一个简单的示例:

UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
updateWrapper.set("age", 26).eq("name", "张三");
int affectedRows = userMapper.update(null, updateWrapper);

在上面的示例中,updateWrapper.set("age", 26) 表示设置更新的字段和数值,updateWrapper.eq("name", "张三") 则表示添加一个等于条件。最后,使用 userMapper.update(null, updateWrapper) 执行更新操作。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值