溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

MyBatis-Plus如何修改和添加自動(dòng)填充時(shí)間

發(fā)布時(shí)間:2021-08-06 13:51:14 來源:億速云 閱讀:338 作者:小新 欄目:開發(fā)技術(shù)

小編給大家分享一下MyBatis-Plus如何修改和添加自動(dòng)填充時(shí)間,希望大家閱讀完這篇文章之后都有所收獲,下面讓我們一起去探討吧!

MyBatis-Plus 修改和添加自動(dòng)填充時(shí)間

數(shù)據(jù)庫字段設(shè)置:

`valid_verify_time` datetime DEFAULT NULL COMMENT '有效性審核時(shí)間',

實(shí)體類設(shè)置:

@JsonSerialize:序列化

@JsonDeserialize:反序列化

LocalDateTimeSerializer:JDK時(shí)間序列化規(guī)則

@ApiModelProperty(value = "有效性審核時(shí)間")
    @TableField(fill = FieldFill.UPDATE, update = "now()")
    @JsonSerialize(using = LocalDateTimeSerializer.class)
    @JsonDeserialize(using = LocalDateTimeDeserializer.class)
    private LocalDateTime validVerifyTime;

打印出來的SQL

MyBatis-Plus如何修改和添加自動(dòng)填充時(shí)間

mybatisplus自動(dòng)填充值:完成自動(dòng)填充更新時(shí)間和創(chuàng)造時(shí)間,以及坑

一般實(shí)體類最后都會(huì)帶有createTime和updateTime但我希望讓它是自動(dòng)更新的,由于mybatisplus的sql是看不到的, 但又不想自己重寫sql。于是解決方法來了!用它自帶的字段自動(dòng)填充功能!

實(shí)體類:

@Data
@TableName("mmall_user")
public class User {
    @TableId
    private int id;
    private String username;
    private String password;
    private String email;
    private String phone;
    private String question;
    private String answer;
    private int role;
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
}

MyBatis-Plus如何修改和添加自動(dòng)填充時(shí)間

這個(gè)是自增策略,我希望createTime只是在插入的時(shí)候會(huì)自動(dòng)賦值,而updateTime是插入和更新的時(shí)候自動(dòng)賦值一共是有一下幾種:

MyBatis-Plus如何修改和添加自動(dòng)填充時(shí)間

已經(jīng)自定義了自動(dòng)填充的觸發(fā)情況,下面應(yīng)該定義自動(dòng)填充的策略了

1.

MyBatis-Plus如何修改和添加自動(dòng)填充時(shí)間

創(chuàng)建如圖所示的類

代碼如下:

@Component
@Slf4j
public class MyMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
    log.info("start insert field....");
    this.setFieldValByName("createTime", LocalDateTime.now(),metaObject);
    this.setFieldValByName("updateTime", LocalDateTime.now(),metaObject);
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("updateTime", LocalDateTime.now(),metaObject);
    }
}

MyBatis-Plus如何修改和添加自動(dòng)填充時(shí)間

第一個(gè)是字段name,第二個(gè)是value,第三個(gè)照著寫

用了LocalDateTime實(shí)體類字段類型也要用LocalTime類型

我這里用的:

MyBatis-Plus如何修改和添加自動(dòng)填充時(shí)間

用String是無法填充的!類型不匹配

MyBatis-Plus如何修改和添加自動(dòng)填充時(shí)間

這張圖是數(shù)據(jù)庫類型和java類型對(duì)應(yīng)關(guān)系。

當(dāng)然你的數(shù)據(jù)庫這里用timestamp和datetime都是可以的

看完了這篇文章,相信你對(duì)“MyBatis-Plus如何修改和添加自動(dòng)填充時(shí)間”有了一定的了解,如果想了解更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道,感謝各位的閱讀!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI