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;