应用自定义 ID 生成器
- 实现
IdentifierGenerator
接口
@Component
public class CustomerIdGenerator implements IdentifierGenerator {
@Override
public Number nextId(Object entity) {
// 填充本人的 Id 生成器,return HolaSms.snowFlake();}
}
- 实体类或者配置文件中指定 id 填充形式
- 配置文件
mybatis-plus:
global-config:
db-config:
id-type: assign_id
- 实体类
@TableId(type = IdType.ASSIGN_ID)
private Long id;
这两种形式任意抉择其中一种即可, 如果同时配置,会以实体类为准。
如果你的代码中手动设置了 id,会以你手动设置的为准。
字段填充
咱们创立的表个别会有
create_user
,update_user
这样的字段,跟理论的业务没有太大关系,这时候,咱们能够提前指定字段的填充形式,咱们就不必关怀这些字段的值的问题了。
- 编写填充形式,实现
MetaObjectHandler
接口
这个接口提供了两个办法,一个是插入的时候填充,一个是更新的时候填充。
咱们调用填充的办法参数别离是:
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;