关于mybatisPlus自定义主键id拼接方式

项目场景:服务进行重构时发现部分主键是采用的自定义主键的方式,不考虑特殊性则可以直接@TableId(value = “XXX”, type = IdType.ASSIGN_UUID) 直接自动生成uuid,以下时特殊情况


当前mybatis-plus的版本号是3.5.2


尝试过的其他方法:

1.自定义主键生成策略:实现IdentifierGenerator类,将自定义主键生成策略注册到 MyBatis,前缀固定不可行,多表多前缀。
2.在插入前操作:实现Interceptor类beforeInsert(Insert insert)方法,版本废弃


最终解决方案:

通过实现MetaObjectHandler类进行处理

例如:
在新增时进行某些处理。

@Override
public void insertFill(MetaObject metaObject) {
	if (metaObject.hasGetter("tableName")) {
            // 在插入操作时自动填充主键字段的值
            if ("表名a".equals(metaObject.getValue("tableName"))) {
                this.setFieldValByName("主键A", "AAA" + UUID.randomUUID(), metaObject);
                this.setFieldValByName("操作时间", 时间(数据库中对应类型), metaObject);
            }
            if ("表名b".equals(metaObject.getValue("tableName"))) {
                this.setFieldValByName("主键B", "BBB" + UUID.randomUUID(), metaObject);
            }
        }

        this.setFieldValByName("创建时间", 时间(数据库中对应类型), metaObject);
        this.setFieldValByName("修改时间", 时间(数据库中对应类型), metaObject);
}

在修改时进行某些处理。

@Override
public void updateFill(MetaObject metaObject) {
        this.setFieldValByName("修改时间", 时间(数据库中对应类型), metaObject);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小阳小朋友

随便吧

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值