Spring Boot项目实战之MyBatisPlus对实体类中Date类型字段进行数据自动填充

  MyBatisPlus自动填充功能可以看做是执行特定语句操作时,对数据库中不为空的字段进行默认值操作!

  实体类中在对应字段加入注解@TableField,其注解参数根据是创建时间和更新时间而定

@Data
@EqualsAndHashCode(callSuper = false)
@Accessors(chain = true)
@ApiModel(value="StatisticsDaily对象", description="网站统计日数据")
public class StatisticsDaily implements Serializable {

    private static final long serialVersionUID = 1L;

    @ApiModelProperty(value = "主键")
    @TableId(value = "id", type = IdType.ID_WORKER_STR)
    private String id;

    @ApiModelProperty(value = "创建时间")
    @TableField(fill= FieldFill.INSERT)  //自动填充
    private Date gmtCreate;

    @ApiModelProperty(value = "更新时间")
    @TableField(fill= FieldFill.INSERT_UPDATE)//自动填充
    private Date gmtModified;


}

  查看fill()方法对应的源码,其默认类型是FieldFill

@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ElementType.FIELD})
public @interface TableField {
    String value() default "";

    String el() default "";

    boolean exist() default true;

    String condition() default "";

    String update() default "";

    FieldStrategy strategy() default FieldStrategy.DEFAULT;

    FieldFill fill() default FieldFill.DEFAULT;

    boolean select() default true;
}

  查看枚举类型FieldFill源码,一共有4大类型,默认、新增、修改、新增修改!

package com.baomidou.mybatisplus.annotation;
public enum FieldFill {
    DEFAULT,
    INSERT,
    UPDATE,
    INSERT_UPDATE;

    private FieldFill() {
    }
}

  自定义MyMetaObject(字段自动填充处理类)继承MetaObjectHandler,会重写两个方法insertFill()、updateFill(),对应就是新增填充、修改填充两种场景。

  注意:注解@Component不要忘记,交给Spring容器进行管理!

@Component
public class MyMetaObject implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        //设置属性值---三个参数fieldName、fieldVal、metaObject
        this.setFieldValByName("gmtCreate",new Date(),metaObject);
        this.setFieldValByName("gmtModified",new Date(),metaObject);
      //设置默认值
//        this.setFieldValByName("version",1,metaObject);
//        this.setFieldValByName("deleted",0,metaObject);
    }
    @Override
    public void updateFill(MetaObject metaObject) {
        //修改时只需修改更新时间
        this.setFieldValByName("gmtModified",new Date(),metaObject);
    }
}

♚学习、实战、总结、分享,让生活变得更美好!
☞林大侠博客:https://coding0110lin.blog.csdn.net/  欢迎转载,一起技术交流探讨!

你可能感兴趣的:(Spring,Boot&Spring,Cloud)