mybatis-plus如何自動填充字段創建時間和修改時間 前言 自動填充 代碼層面

前言

根據阿里巴巴開發手冊,表必備三個字段:id,create_time, update_time,針對創建時間和修改時間我們有兩種方式可以去生成——數據庫層面和代碼層面

自動填充

數據庫層面
數據庫層面,就是在設計表的時候,針對某一個字段,可以設置一些更新策略。比如可以設置,當該記錄添加的時候,自動設置創建時間爲當前時間。當該條記錄修改的時候,自動設置更新時間爲當前時間。但是,由於數據庫的設計非常重要,開發過程中不能隨意修改數據庫結構,故此種方法不作考慮

代碼層面

代碼層面,就是我們使用代碼去填充創建時間和修改時間,下面我就主要說一下這個功能在Mybatis-plus中的使用

1.創建一張表,表中含有字段create_time和update_time,字段的類型爲:datetime

2.在springboot的pom文件中,引入mybatis-plus的依賴

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.2.0</version>
</dependency>

3.在一個項目中,我們會有很多的實體類,在實體類中配置屬性創建時間和更新時間,屬性上加入@TableField註解

@ApiModelProperty(value = "創建時間")
@TableField(fill = FieldFill.INSERT)
private Date createTime;
   
@ApiModelProperty(value = "更新時間")
@TableField(fill = FieldFill.INSERT_UPDATE)
private Date updateTime;

4.註解@TableField中fill詳細介紹

(1)fill(字段填充策略),爲枚舉類型,不是必須指定,默認爲FieldFill.DEFAULT

(2)FieldFill

DEFAULT:默認不處理
INSERT:插入時填充字段
UPDATE:更新時填充字段
INSERT_UPDATE:插入和更新時填充字段
5.編寫處理器Handler來進行自動填充,把下面的代碼直接寫在自己的handler包內即可

package com.water76016.ourtask.config.security.handler;
   
import com.baomidou.mybatisplus.core.handlers.MetaObjectHandler;
import org.apache.ibatis.reflection.MetaObject;
import org.springframework.stereotype.Component;
import java.util.Date;
   
/**
 * @program: our-task
 * @description: 對數據庫每條記錄的創建時間和更新時間自動進行填充
 * @author: water76016
 * @create: 2020-11-24 10:53
 **/
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
    /**
     * 插入時的填充策略
     * @param metaObject
     */
    @Override
    public void insertFill(MetaObject metaObject) {
        this.setFieldValByName("createTime", new Date(), metaObject);
        this.setFieldValByName("updateTime", new Date(), metaObject);
    }
   
    /**
     * 更新時的填充策略
     * @param metaObject
     */
    @Override
    public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("updateTime", new Date(), metaObject);
    }
}

來源:https://www.tuicool.com/articles/QveAVr6

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