0%
首先,在用之前一定要知道,想要时间能够被自动填充,xxxmapper必须要继承BaseMapper《T》,然后使用basemapper中的方法(自己写的insert sql语句,时间不会被自动填充)
1.在需要被填充的字段上加上@TableField
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| public enum FieldFill {
DEFAULT,
INSERT,
UPDATE,
INSERT_UPDATE }
|
1 2
| @TableField(fill = FieldFill.INSERT) private LocalDateTime operTime;
|
创建时间,一般用FieldFill.INSERT即可,更新时间一般用FieldFill.INSERT_UPDATE(因为第一次更新时没有数据,是插入)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
| @Slf4j @Component public class MyMetaObjectHandler implements MetaObjectHandler {
@Override public void insertFill(MetaObject metaObject) { this.strictInsertFill(metaObject, "createTime", () -> LocalDateTime.now(), LocalDateTime.class); }
@Override public void updateFill(MetaObject metaObject) { this.strictUpdateFill(metaObject, "updateTime", () -> LocalDateTime.now(), LocalDateTime.class);
} }
|
3.如果有多个要填充的字段(比如在这里,为了兼容不同开发者不同的时间字段)
1 2 3 4 5
| @Override public void insertFill(MetaObject metaObject) { this.strictInsertFill(metaObject, "operTime", () -> LocalDateTime.now(), LocalDateTime.class); this.strictInsertFill(metaObject, "createTime", () -> LocalDateTime.now(), LocalDateTime.class); }
|
这样即可填充数据库中的oper_time,create_time字段
GMT+8:时间设置为东八区
1 2
| @TableField(fill = FieldFill.INSERT) private LocalDateTime operTime;
|
1 2 3
| @TableField(fill = FieldFill.INSERT) @JsonFormat( pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") private LocalDateTime operTime;
|