项目中有时候有些字段可能会有这样的需求,在插入或者更新时自动填充数据,比如时间,version,密码等。mybatis-plus提供了这样的功能用来实现字段的自动填充
在实体类为相应的字段添加@TableFiled注解
为created(创建时间)添加自动填充功能,在新增时有效。为updated添加自动填充功能,在新增和修改是有效。
FiledFill提供了多种选择
public enum FieldFill {
//默认不做处理
DEFAULT,
// 新增时对字段自动填充
INSERT,
//修改时对字段自动填充
UPDATE,
//新增和修改时对字段进行自动填充
INSERT_UPDATE;
private FieldFill() {
}
}
编写类实现MetaObjectHandler接口
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
/**
* 新增时对创建时间和修改时间进行自动填充
* @param metaObject
*/
@Override
public void insertFill(MetaObject metaObject) {
Object created = getFieldValByName("created", metaObject);
if (null==created){
setFieldValByName("created",new Date(),metaObject);
}
Object updated = getFieldValByName("updated", metaObject);
if(null==updated){
setFieldValByName("updated",new Date(),metaObject);
}
}
/**
* 修改时对修改时间自动填充
* @param metaObject
*/
@Override
public void updateFill(MetaObject metaObject) {
Object updated = getFieldValByName("updated", metaObject);
setFieldValByName("updated",new Date(),metaObject);
}
}