深入学习MyBatis-Plus框架中的Wrapper系列封装类

引言:
MyBatis-Plus是Java中使用频率较高的持久层框架之一,它提供了一系列强大的功能来简化开发过程。其中的Wrapper系列封装类在条件查询和更新中起到关键作用,包括AbstractLambdaWrapper、EmptyWrapper、LambdaQueryWrapper、LambdaUpdateWrapper、QueryWrapper和UpdateWrapper等。本文将深入研究这些封装类的用处和使用方法,并进一步扩展相关知识。

层级分布:
在这里插入图片描述

Wrapper : 条件构造抽象类,最顶端父类

  • AbstractWrapper : 用于查询条件封装,生成 sql 的 where 条件
    • QueryWrapper : 查询/删除条件封装
    • UpdateWrapper : 修改条件封装
    • AbstractLambdaWrapper : 使用Lambda 语法
      • LambdaQueryWrapper :用于Lambda语法使用的查询Wrapper
      • LambdaUpdateWrapper : Lambda 更新封装Wrapper

一、AbstractLambdaWrapper简介
AbstractLambdaWrapper是MyBatis-Plus中的一个抽象类,它实现了Wrapper接口,同时也是LambdaQueryWrapper和LambdaUpdateWrapper的共同基类。AbstractLambdaWrapper提供了基于Lambda表达式的条件构造方法,使得查询和更新更加简洁和灵活。

二、EmptyWrapper的作用和使用方法

  1. 作用:
    EmptyWrapper是Wrapper接口的一个实现类,用于构建空的查询条件,即无任何限制条件的查询。

  2. 使用方法:
    (1)创建EmptyWrapper对象:

EmptyWrapper<User> emptyWrapper = new EmptyWrapper<>();

(2)执行查询:

List<User> userList = userMapper.selectList(emptyWrapper);

三、LambdaQueryWrapper和LambdaUpdateWrapper的作用和使用方法

  1. 作用:
    LambdaQueryWrapper和LambdaUpdateWrapper都是AbstractLambdaWrapper的子类,用于构建查询和更新条件。

  2. 使用方法:
    (1)创建LambdaQueryWrapper对象:

LambdaQueryWrapper<User> lambdaQueryWrapper = new LambdaQueryWrapper<>();

(2)设置查询条件:

lambdaQueryWrapper.like(User::getUsername, "admin")
                   .between(User::getAge, 20, 30)
                   .orderByAsc(User::getCreateTime);

(3)执行查询:

List<User> userList = userMapper.selectList(lambdaQueryWrapper);
  1. 扩展功能:Lambda表达式的更新操作
    LambdaQueryWrapper和LambdaUpdateWrapper都支持Lambda表达式的更新操作,使用起来更加方便:
LambdaUpdateWrapper<User> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
lambdaUpdateWrapper.set(User::getStatus, 1)
                   .eq(User::getUsername, "admin");
int result = userMapper.update(null, lambdaUpdateWrapper);

四、QueryWrapper和UpdateWrapper的作用和使用方法

  1. 作用:
    QueryWrapper和UpdateWrapper是Wrapper接口的实现类,提供了丰富的查询和更新条件构造方法。

  2. 使用方法:
    (1)创建QueryWrapper对象:

QueryWrapper<User> queryWrapper = new QueryWrapper<>();

(2)设置查询条件:

queryWrapper.eq("username", "admin")
            .between("age", 20, 30)
            .orderByAsc("create_time");

(3)执行查询:

List<User> userList = userMapper.selectList(queryWrapper);
  1. 扩展功能:多表连接查询、自定义SQL等
    QueryWrapper和UpdateWrapper支持多表连接查询和自定义SQL等功能。下面是一些扩展的示例:

(1)多表连接查询:

queryWrapper.eq("u.username", "admin")
            .leftJoin("order o", "u.user_id = o.user_id");

(2)使用自定义SQL:

queryWrapper.apply("date_format(create_time,'%Y-%m-%d')={0}", "2021-01-01");

五、小结与扩展
通过使用Wrapper系列封装类,我们可以轻松构建复杂的查询和更新条件,并在MyBatis-Plus框架中高效地进行数据库操作。除了搭配Lambda表达式、多表连接查询和自定义SQL等功能外,MyBatis-Plus还提供了更多有用的功能,如分页查询、排序、聚合查询等,值得进一步学习和探索。

希望本文能够帮助读者更全面地理解Wrapper系列封装类的使用方法,以及其扩展功能的应用。对于更多关于MyBatis-Plus框架的学习,建议阅读官方文档和相关教程,提升自己的技术水平。

  • 10
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

菜鸡上道

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值