关于java: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接口

这个接口提供了两个办法,一个是插入的时候填充,一个是更新的时候填充。
咱们调用填充的办法参数别离是:

    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;

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理