通常在使用JPA的时候,我们定义时间类型的属性:

@Column( columnDefinition="TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP comment ' 创建时间'")
@Temporal(TemporalType.TIMESTAMP)
@Transaction
protected Date gmtCreated;

其中

@Column可以指定属性在数据库中的存储类型以及注解

@Temporal:可以指定前端取值的类型

@Temporal(TemporalType.DATE): 在页面端取值:2016--09--28

 @Temporal(TemporalType.TIME): 在页面端取值:15:50:30

@Temporal(TemporalType.TIMESTAMP): 在页面端取值:2016-09-28 15:52:32:000

@Transaction:表示数据在数据库中不创建字段

以上这些都是属于JPA注解

在mybatisPlus中

@TableField(value = "update_time",exist = true,fill = FieldFill.INSERT_UPDATE)
private Date updateTime;

@TableField表示字段注解

valeu:指定字段在数据库中的列名

exist:表示属性是否在数据库中创建字段

fill:填充策略。标明在什么时候填充默认值。此注解需要实现元对象处理器接口

    示例代码如下:

实体类
public class User {

    // 注意!这里需要标记为填充字段
    @TableField(.. fill = FieldFill.INSERT)
    private String fillField;

    ....
}
元对象处理器实现类
@Slf4j
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {

    @Override
    public void insertFill(MetaObject metaObject) {
        log.info("start insert fill ....");
        this.strictInsertFill(metaObject, "createTime", LocalDateTime.class, LocalDateTime.now()); // 起始版本 3.3.0(推荐使用)
        // 或者
        this.strictUpdateFill(metaObject, "createTime", () -> LocalDateTime.now(), LocalDateTime.class); // 起始版本 3.3.3(推荐)
        // 或者
        this.fillStrategy(metaObject, "createTime", LocalDateTime.now()); // 也可以使用(3.3.0 该方法有bug)
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        log.info("start update fill ....");
        this.strictUpdateFill(metaObject, "updateTime", LocalDateTime.class, LocalDateTime.now()); // 起始版本 3.3.0(推荐)
        // 或者
        this.strictUpdateFill(metaObject, "updateTime", () -> LocalDateTime.now(), LocalDateTime.class); // 起始版本 3.3.3(推荐)
        // 或者
        this.fillStrategy(metaObject, "updateTime", LocalDateTime.now()); // 也可以使用(3.3.0 该方法有bug)
    }
}
04-02 10:29