引言:
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的作用和使用方法
-
作用:
EmptyWrapper是Wrapper接口的一个实现类,用于构建空的查询条件,即无任何限制条件的查询。 -
使用方法:
(1)创建EmptyWrapper对象:
EmptyWrapper<User> emptyWrapper = new EmptyWrapper<>();
(2)执行查询:
List<User> userList = userMapper.selectList(emptyWrapper);
三、LambdaQueryWrapper和LambdaUpdateWrapper的作用和使用方法
-
作用:
LambdaQueryWrapper和LambdaUpdateWrapper都是AbstractLambdaWrapper的子类,用于构建查询和更新条件。 -
使用方法:
(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);
- 扩展功能: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的作用和使用方法
-
作用:
QueryWrapper和UpdateWrapper是Wrapper接口的实现类,提供了丰富的查询和更新条件构造方法。 -
使用方法:
(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);
- 扩展功能:多表连接查询、自定义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框架的学习,建议阅读官方文档和相关教程,提升自己的技术水平。