目录:
(1)MyBatistPlus:修改和自动填充
(2)MyBatis-Plus-乐观锁
(1)MyBatistPlus:修改和自动填充
1、更新操作
注意:update时生成的sql自动是动态sql:UPDATE user SET age=? WHERE id=?
//修改 |
在测试类中写一个修改的测试当方法,
2、自动填充
需求描述:
项目中经常会遇到一些数据,每次都使用相同的方式填充,例如记录的创建时间,更新时间等。
我们可以使用MyBatis Plus的自动填充功能,完成这些字段的赋值工作
原来我们添加数据需要使用Set进行设值,Mp中有一种特定的方式,实现跟Set相同的效果,是针对属性值的效果
修改数据库字段,这两个字段用自动填充完成
1.2实体类修改
实体上增加字段并添加自动填充注解
@TableField(fill = FieldFill.INSERT) |
1.3实现元对象处理器接口
注意:不要忘记添加 @Component 注解
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
//mp执行添加操作,这个方法执行
@Override
public void insertFill(MetaObject metaObject) {
this.setFieldValByName("createTime",new Date(),metaObject);
this.setFieldValByName("updateTime",new Date(),metaObject);
}
//mp执行修改操作,这个方法执行
@Override
public void updateFill(MetaObject metaObject) {
this.setFieldValByName("updateTime",new Date(),metaObject);
}
} |
在次执行添加操作:
执行修改操作:
名字发生了修改,时间也自动发生了修改:
(2)MyBatis-Plus-乐观锁
场景
主要适用场景:当要更新一条记录的时候,希望这条记录没有被别人更新,也就是说实现线程安全的数据更新
乐观锁实现方式:
取出记录时,获取当前version
更新时,带上这个version
执行更新时, set version = newVersion where version = oldVersion
如果version不对,就更新失败
接下来介绍如何在Mybatis-Plus项目中,使用乐观锁:
乐观锁实现流程
4.1修改实体类
添加 @Version 注解
@Version private Integer version; |
4.2创建配置文件
创建包config,创建文件MybatisPlusConfig.java
此时可以删除主类中的 @MapperScan 扫描注解
@Configuration |
注册乐观锁插件
给User字段添加注解,添加的时候添加默认值,这时候还要修改自动填充策略:
先添加一条数据:
修改测试: