shardingjdbc+mybatisplus自set主键不插入

因为业务发展,个别数据表业务量增速过快,已达到分库分表需要,于是引入shardingjdbc组件进行分表,但是发现之前mybatis生成的数据表对应实体类主键id可以通过自己set值来实现自定义主键,尽管字段上写了注解

@Table(type=IdType.AUTO)
private int id;
user.setId(100);
userMapper.save(user);
INSERT INTO USER(id,name) VALUES(100,'张三')

引入sharding-jdbc后,发现自行setId后插入,会报错提示主键id不能为空,通过查看sql执行日志发现,里面并没有id字段,所以报错

INSERT INTO USER(name) VALUES('张三')

当然,我们可以通过mybatisplus注解生成主键

//uuid主键
@TableId(type = IdType.UUID)
//雪花算法主键
@TableId(type = IdType.ID_WORKER)

但是我们想要自定义主键:
1、自定义新的IdentifierGenerator替换默认的,但是有个问题,这个操作是全局的,假设我一些表想用uuid做主键,一些想用自增。
2、使用@TableId(type = IdType.INPUT)注解

本人工作中这么用是解决了问题,但是又有另一个问题,我想达到未引入shardingjdbc前的效果,也就是我加了
@TableId(type = IdType.UUID)
但是当我setId(“abc”),就能用我set的值,这个能否实现,知道的小伙伴可以留言讨论

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值