mysql id生成器自定义_MybatisPlus使用自定义Id生成器&数据自动填充
使用自定义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;
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)