IdentifierGenerator
接口@Component public class CustomerIdGenerator implements IdentifierGenerator { @Override public Number nextId(Object entity) { // 填充本身的Id生成器, return HolaSms.snowFlake(); } }
mybatis-plus: global-config: db-config: id-type: assign_id
@TableId(type = IdType.ASSIGN_ID) private Long id;
這兩種方式任意選擇其中一種便可,若是同時配置,會以實體類爲準。
若是你的代碼中手動設置了id,會以你手動設置的爲準。
咱們建立的表通常會有create_user
,update_user
這樣的字段,跟實際的業務沒有太大關係,這時候,咱們能夠提早指定字段的填充方式,咱們就不用關心這些字段的值的問題了。
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()); } }
@TableField
註解,並指定填充時機。/** * 更新人 */ @TableField(fill = FieldFill.INSERT_UPDATE) private String updateUser; /** * 建立者 */ @TableField(fill = FieldFill.INSERT) private String createUser;