1. 程式人生 > 其它 >mybatis-pius自動填充

mybatis-pius自動填充

技術標籤:SpringCloud學習java

mybatis-pius自動填充

花開堪折直需折,莫待無花空折枝

阿里Java開發手冊,資料庫欄位必須有:id,建立時間,更新時間;

自動填充方式實現:

  • 資料庫層面:
    • 設定預設值,但由於各個資料庫的設定預設值方式不一樣,如果資料庫出現移植,就需要重新設定大量資料的時間;一般不推薦,因為有更好的方式。
  • 也可以使用mybatis-plus的自動填充

mybatis-plus自動填充:

  • 第一步:註解填充欄位 @TableField(fill = FieldFill.INSERT)
@Data
public class User {
    @TableId
(type = IdType.ASSIGN_ID) private Long id; private String name; private int age; private String email; //自動填充註解 @TableField( fill = FieldFill.INSERT) private Date createTime; @TableField(fill = FieldFill.INSERT_UPDATE) private Date updateTime; }

​ 欄位填充有三種方式:

public enum FieldFill {
    /**
     * 預設不處理
     */
    DEFAULT,
    /**
     * 插入填充欄位
     */
    INSERT,
    /**
     * 更新填充欄位
     */
    UPDATE,
    /**
     * 插入和更新填充欄位
     */
    INSERT_UPDATE
}
  • 第二步:自定義實現MetaObjectHandler 的類,並實現對應的方法(insertFill、updateFill):
@Component
public class MyMetaObjectHandler implements MetaObjectHandler {
    @Override
    public void insertFill(MetaObject metaObject) {
        this.setFieldValByName("createTime",new Date(),metaObject);
        this.setFieldValByName
("updateTime",new Date(),metaObject); } @Override public void updateFill(MetaObject metaObject) { this.setFieldValByName("updateTime",new Date(),metaObject); } }

this.setFieldValByName方法的三個引數分別為:屬性名稱,填充的資料,元資料物件
注:MyMetaObjectHandler 需要標註為一個元件:@Component,才能被注入到IOC容器中

測試:並沒有設定User的更新和建立時間

@Test
void autoFillTest(){
    User user=new User();
    user.setName("LD");
    user.setAge(18);
    user.setEmail("[email protected]");
    int insert = userMapper.insert(user);
    System.out.println(insert);
}

結果:更新和建立時間已自動填充

在這裡插入圖片描述

轉載請註明來源,謝謝