使用情景:当我们往数据库表中加入一条数据,或者更新一条数据的时候,通常要调用实体类的set方法,运用mybatisplus的自动填充功能则可以帮我们自动设置,不用我们手动调用set()方法。
具体实现
1、在实体类中对需要自动填充的属性加上注解
//对于添加时要填充的
@TableField(fill = FieldFill.INSERT)
//对于更新时要填充的
@TableField(fill = FieldFill.INSERT_UPDATE)
2、创建类
类要实现MetaObjectHandler接口
实现接口中的insertFill和updateFill方法
以添加和更新数据时的时间为例
@TableField(fill = FieldFill.INSERT)
private Date createTime;
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;
@Component//交给spring管理
//@Service
//@Repository
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);
}
}
对于@Component、@Service、@Repositor这三个注解是要把该类交给spring进行管理,否则,在添加或者更新操作时,将得不到自动填充的功能
三个注解任意一个都可以;
对于一两次的更新添加操作可能看不出mp填充功能的方便,有人可能觉得直接set更简单,但是对于操作频繁而言,可以简洁很多。