springboot+mybatis-plus实现⾃定义主键⽣成,长度⾃定义
springboot结构SpringBoot+MyBatis-Plus实现⾃定义主键⽣成,长度⾃定义
总结⾃⼰在使⽤Mybatis-Plus主键⾃增时的问题:
(⼀)⼀般的程序员没有权限去修改数据库表的结构及属性,所以遇到使⽤MyBatis-Plus的主键⾃增策略时会发现,
1、当使⽤@TableId(type = IdType.AUTO)时,它⾃动⽣成的主键长度为20位。
2、使⽤@TableId(type = IdType.ASSIGN_ID)和@TableId(type = IdType.ASSIGN_UUID)时,长度更是⽐20位的AUTO长。
所以当数据库的主键长度⼩于MyBatis-Plus主键⽣成的最⼩长度@TableId(type = IdType=AUTO)20位时,新增的数据肯定插不进去,报错为超出范围。
解决⽅法:使⽤MyBatis-Plus的⾃定义主键⽣成策略。
步骤⼀:在SpringBoot中新建包
步骤⼆:在CustomIdGenerator.java中加⼊代码
@Slf4j
@Component
public class CustomIdGenerator implements IdentifierGenerator {
private final AtomicLong al =new AtomicLong(1111015);
@Override
public Long nextId(Object entity){
//可以将当前传⼊的class全类名来作为bizKey,或者提取参数来⽣成bizKey进⾏分布式Id调⽤⽣成.
String bizKey = Class().getName();
log.info("bizKey:{}", bizKey);
MetaObject metaObject = SystemMetaObject.forObject(entity);
final long id = al.getAndAdd(121111422);
log.info("为{}⽣成主键值->:{}",id);
return id;
}
}
重点:你要根据你id的长度来设置开始时的id初始值和每次增加多少,⼀定不能超过表中的id长度
步骤三、在你的实体类中的主键上⾯加上@TableId(type = IdType…ASSIGN_ID)
然后就可以实现⾃定义主键id⾃增多少,随你⼼情,只要不超出表的定义范围。
我2021届应届⽣,在实习中遇到的问题⼀⼀总结,希望也是2021届毕业⽣的你能解决问题
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论