原文网址:MyBatis-Plus--Wrapper--使用/教程/实例_IT利刃出鞘的博客-CSDN博客
简介
本文介绍MyBatisPlus的条件构造器Wrapper的用法(有示例)。
本文内容包括:条件大全;Wrapper类的关系;Wrapper的用法:QueryWrapper、LambdaQueryWrapper、LambdaQueryChainWrapper、UpdateWrapper、LambdaUpdateWrapper、LambdaUpdateChainWrapper。
条件构造器
见:Mybatis-Plus--条件构造器--详解/实例_IT利刃出鞘的博客-CSDN博客
Wrapper类的关系
介绍
上图绿色框为抽象类abstract
蓝色框为正常class类,可new对象
黄色箭头指向为父子类关系,箭头指向为父类
wapper介绍
Wrapper : 条件构造抽象类,最顶端父类,抽象类中提供4个方法西面贴源码展示
AbstractWrapper : 用于查询条件封装,生成 sql 的 where 条件
AbstractLambdaWrapper : Lambda 语法使用 Wrapper统一处理解析 lambda 获取 column。
LambdaQueryWrapper :看名称也能明白就是用于Lambda语法使用的查询Wrapper
LambdaUpdateWrapper : Lambda 更新封装Wrapper
QueryWrapper : Entity 对象封装操作类,不是用lambda语法
UpdateWrapper : Update 条件封装,用于Entity对象更新操作
QueryWrapper
见:Mybatis-Plus--QueryWrapper--使用/实例_IT利刃出鞘的博客-CSDN博客
LambdaQueryWrapper
见:Mybatis-Plus--LambdaQueryWrapper--使用/实例_IT利刃出鞘的博客-CSDN博客
LambdaQueryChainWrapper
见:Mybatis-Plus--LambdaQueryChainWrapper--使用/实例_IT利刃出鞘的博客-CSDN博客
UpdateWrapper
根据 Entity 条件,更新记录
entity 实体对象 (set 条件值,不能为 null)
updateWrapper 实体对象封装操作类(可以为 null,里面的 entity 用于生成 where 语句)
public void update() {
//修改值
User user = new User();
user.setStatus(true);
user.setName("zhangsan");
//修改条件
UpdateWrapper<User> userUpdateWrapper = new UpdateWrapper<>();
userUpdateWrapper.eq("name", "lqf");
userUpdateWrapper.eq("email", "123@qq.com");
int update = userMapper.update(user, userUpdateWrapper);
System.out.println(update);
}
打印结果
==> Preparing: UPDATE user SET name=?, status=? WHERE name = ?
==> Parameters: zhangsan(String), true(Boolean), lqf(String)
<== Updates: 100
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@56a4f272]
100
2018-10-02 15:08:03.928 INFO 7972 --- [ Thread-2] o.s.w.c.s.GenericWebApplicationContext : Closing org.springframework.web.context.support.GenericWebApplicationContext@37313c65: startup date [Tue Oct 02 15:08:00 CST 2018]; root of context hierarchy
2018-10-02 15:08:03.937 INFO 7972 --- [ Thread-2] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown initiated...
2018-10-02 15:08:04.053 INFO 7972 --- [ Thread-2] com.zaxxer.hikari.HikariDataSource : HikariPool-1 - Shutdown completed.
Process finished with exit code 0
不构造实体对象
假设只更新一个字段,使用updateWrapper 的构造器时也需构造一个实体对象,这样比较麻烦。可用updateWrapper的set方法
UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("name","shimin").set("age", 35);
Integer rows = userMapper.update(null, updateWrapper);
LambdaUpdateWrapper
简介
数据更新相关的构造器(UpdateWrapper、LambdaUpdateWrapper、LambdaUpdateChainWrapper)使用方法类似于查询构造器(QueryWrapper、LambdaQueryWrapper、LambdaQueryChainWrapper),不同的是它增加了如下两个方法:
set:设置数据库字段值
setSql:设置 set 部分的 sql
LambdaUpdateWrapper<User> lambdaUpdateWrapper = new LambdaUpdateWrapper<>();
lambdaUpdateWrapper.eq(User::getName, "shimin").set(User::getAge, 34);
Integer rows = userMapper.update(null, lambdaUpdateWrapper);
LambdaUpdateChainWrapper
简介
本Wrapper只可更新数据。
典型用法是自定义Service并继承ServiceImpl,实现IService,然后自定义service实例直接用lambdaUpdate方法取得
所在包为:com.baomidou.mybatisplus.extension.conditions.update
(另一个包已标记为deprecated:com.baomidou.mybatisplus.extension.service.additional.update.impl)
更新数据:
LambdaUpdateChainWrapper<User> lambdaUpdateChainWrapper = new LambdaUpdateChainWrapper<>(userMapper);
boolean update = lambdaUpdateChainWrapper.eq(User::getName, "Iron Man").set(User::getAge, 20).update();
可用的更新
其他网址
条件构造器queryWrapper、updateWrapper_QingFeng-Li的博客-CSDN博客
Mybatis plus学习笔记(常用注解/条件构造器) - 知乎
————————————————
版权声明:本文为CSDN博主「IT利刃出鞘」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/feiying0canglang/article/details/107216914