MybatisPlus使用自定義Id生成器&數據自動填充

使用自定義ID生成器

  1. 實現IdentifierGenerator接口
@Component
public class CustomerIdGenerator implements IdentifierGenerator {
    @Override
    public Number nextId(Object entity) {
        // 填充本身的Id生成器,
        return HolaSms.snowFlake();
    }
}
  1. 實體類或者配置文件中指定id填充方式
  • 配置文件
mybatis-plus:
  global-config:
    db-config:
      id-type: assign_id
  • 實體類
@TableId(type = IdType.ASSIGN_ID)
    private Long id;
這兩種方式任意選擇其中一種便可,若是同時配置,會以實體類爲準。
若是你的代碼中手動設置了id,會以你手動設置的爲準。

字段填充

咱們建立的表通常會有 create_user, update_user這樣的字段,跟實際的業務沒有太大關係,這時候,咱們能夠提早指定字段的填充方式,咱們就不用關心這些字段的值的問題了。
  1. 編寫填充方式,實現MetaObjectHandler接口

這個接口提供了兩個方法,一個是插入的時候填充,一個是更新的時候填充。
咱們調用填充的方法參數分別是:java

1. 實體對象,咱們直接抄下來便可
    2. 須要填充的字段名稱
    3. 須要填充的字段類型
    4. 填充的值
@Component
public class DataAutoFill implements MetaObjectHandler {

    @Override
    public void insertFill(MetaObject metaObject) {
        this.strictInsertFill(metaObject, "createUser", String.class, HolaSms.currentUser());
        this.strictInsertFill(metaObject, "updateUser", String.class, HolaSms.currentUser());
    }

    @Override
    public void updateFill(MetaObject metaObject) {
        this.strictInsertFill(metaObject, "updateUser", String.class, HolaSms.currentUser());
    }
}
  1. 在須要填充的字段標註@TableField註解,並指定填充時機。
/**
     * 更新人
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private String updateUser;

    /**
     * 建立者
     */
    @TableField(fill = FieldFill.INSERT)
    private String createUser;
相關文章
相關標籤/搜索