Mybatis的日常記錄

通常在使用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)
    }
}

 

 

 

 

 

 

 

 

 

 

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章