Mybatis-Plus插件主键生成策略

使用方法:

在ID字段添加注解

@TableId(value = "id",type = IdType.AUTO)
private String id;

Mybatis-Plus主键策略:

生成策略 说明 类型
AUTO AUTO(0, “数据库ID自增”)
INPUT INPUT(1, “用户输入ID”)
ID_WORKER ID_WORKER(2, “全局唯一ID”) Long 类型
UUID UUID(3, “全局唯一ID”)
NONE NONE(4, “该类型为未设置主键类型”)
ID_WORKER_STR ID_WORKER_STR(5, “字符串全局唯一ID”) String 类型

注意

Long类型匹配mysql数据库bigint类型

/**
 * 主键
 */
@TableId(value = "ID", type = IdType.ID_WORKER)
private Long id;

由于mybatis-plus会自动插入一个id到实体对象, 不管你封装与否, 所以有时候导致一些意外的情况发生
默认是生成一个长数字字符串(编码不同可能结尾带有字母)

exception is org.apache.ibatis.reflection.ReflectionException: Could not set property 'id' of 'class com.xxx' with value '1110423703487479810' Cause: java.lang.IllegalArgumentException: java.lang.ClassCastException@14041406

大致就是由于自动生成了一个id:1110423703487479810, 但是无法放入到integer中

解决方案

1、修改id字段类型:将id字段类型改为long, 这样就能保证有足够位数放入生成的id
2、调整数据库id字段类型:将数据库的id字段的长度(改为20位)

你可能感兴趣的:(插件)