MyBatis-Plus实体类字段自动填充

在一个项目中,会包含许多数据表,可能是五张数据表,也可能十几张或者更多。然而在这些数据表中可能会包含一些公共的字段属性,如果每创建一个实体类都要将编写一次代码,很明显会很耗时耗力,MyBatis-Plus支持自定义处理器的形式实现保存更新的自动填充 ,为我们节省了很大的时间。

公共实体类:

创建一个BasePojo类,存放各个实体类的公共字段。添加注解@TableFiled

@Data
public abstract class BasePojo implements Serializable{
    @TableFiled(fill=FiledFill.INSERT)
    private Date created; //数据库执行INSERT操作时为该字段赋值
    @TableFiled(fill=FieldFill.INSERT_UPDATED)
    private Date update;  //数据库执行INSERT或UPDATE操作时为该字段赋值
}

自动填充功能实现类:

创建MyMetaObjectHandler类,实现MetaObjectHandler接口中的insertFill(插入操作)和updateFill(修改操作)方法

public class MyMetaObjectHandler implements MetaObjectHandler {
    /**
     * 插入操作,自动填充
     *
     * @param metaObject
     */
    @Override
    public void insertFill(MetaObject metaObject) {
        Object created = getFileByName("created", metaObject);
        if(Objects.isNull(created)){
            setFiledValByName("created", new Date(), metaObject);
        }
        Object updated = getFiledByName("updated",metaObject);
        if(Objects.isNull(updated)){
            setFiledValByName("updated", new Date(), metaObject);
        }
    }
       
    /**
     * 修改操作,自动填充
     *
     * @param metaObject
     */
    @Override
    public void updateFill(MetaObject metaObject) {
        setFiledValByName("updated", new Date(), metaObject);
    }
}

这样,如果其他数据表中包含了“created”和“updated”字段,实体类直接继承BasePojo类即可,代码执行数据表的INSERT和UPDATE时就可以自动填充这些字段,不用我们再new Date()对象了!!!

 

你可能感兴趣的:(笔记,java,MybatisPlus,JavaWeb,Mybatis)