主键策略
1、MP支持的主键策略介绍
默认主键策略是基于雪花算法的自增ID
2、局部主键策略实现,IdType.class
定义六种:AUTO NONE INPUT(2) ID_WORKER(3)-雪花算法 UUID(4) ID_WORKER_STR(5)
@TableId(type=IdType.AUTO).......数据库主键改成自增/或者非自增
@TableId(type=IdType.UUID)
private String id;
数据库对应改成varchar类型32
注意:主键类型和主键策略类型要一致,如果设定了主键,那么不会自动填充主键策略
3、全局主键策略实现全局策略配置,全局用UUID ,局部策略优先于全局策略
属性文件配置:mybatis-plus.global-config.db-config.id-type:uuid
public class MybatisplusInsertTest{
@Autowired
private UserMapper userMapper;
@Test
public void insert(){
//这里的id是自增的
//@TableId(type=IdType.AUTO)
User user = new User();
user.setName("长江水");
user.setAge(28);
user.setEmail("9834273096@qq.com");
user.setManagerId(1000002);
int insert = userMapper.insert(user);
System.out.println("insert = " + insert);
System.out.println("主键:" + user.getId());
}
@Test
public void insert1(){
//这里的id是UUID
// @TableId(type=IdType.UUID)
User user = new User();
user.setName("大浪淘金");
user.setAge(28);
user.setEmail("9834273096@qq.com");
user.setManagerId(1000002);
int insert = userMapper.insert(user);
System.out.println("insert = " + insert);
System.out.println("主键:" + user.getId());
}
@Test
public void insert2(){
//这里的id是基于雪花算法生成
// @TableId(type=IdType.ID_WORKER_STR)
User user = new User();
user.setName("滔滔江水");
user.setAge(25);
user.setEmail("9234273096@qq.com");
user.setManagerId(1000002);
int insert = userMapper.insert(user);
System.out.println("insert = " + insert);
System.out.println("主键:" + user.getId());
}
}
主键策略,在IdType枚举类中定义。
注:3.x.x版本定义修改为【AUTO、NONE、INPUT、ASSIGN_ID、ASSIGN_UUID】
AUTO:自增
NONE:该类型表示用户未设置主键类型
INPUT:用户输入ID
/** ID_WORKER、UUID、ID_WORKER_STR 三种类型只有插入ID为空,才自动填充,
当用户输入值以输入为主 */
ID_WORKER:全局唯一ID(idWorker)
UUID:全局唯一ID(UUID)
ID_WORKER_STR:全局唯一ID 字符串自增
配置全局主键策略,注意:主键id局部策略优先级高于全局策略。
mybatis-plus:
global-config:
db-config:
id-type: auto
修改主键id为自增ID。
alter table user change column id id bigint(20) auto_increment;
主键策略
1、MP支持的主键策略介绍
默认主键策略是基于雪花算法的自增ID
2、局部主键策略实现,IdType.class
定义六种:AUTO NONE INPUT(2) ID_WORKER(3)-雪花算法 UUID(4) ID_WORKER_STR(5)
@TableId(type=IdType.AUTO).......数据库主键改成自增/或者非自增
@TableId(type=IdType.UUID)
private String id;
数据库对应改成varchar类型32
注意:主键类型和主键策略类型要一致,如果设定了主键,那么不会自动填充主键策略
3、全局主键策略实现
全局策略配置,全局用UUID ,局部策略优先于全局策略
设置主键的自增策略,可以通过在配置文件中设置全局的策略,也可以在实体类上设置局部策略,局部优于全局。
全局配置id策略,在application.yml在添加
global-config.db-config.id-type
@TableId(type=IdType.None) 等等
主键策略!!
局部策略优于全局策略
全局策略测试
全局策略配置
insert测试 设置了ID的效果
insert测试
ID_WORKER_STR
inser测试
ID属性改为String,数据库改为Varchar
UUID策略
insert测试 设置id
NONE策略
数据库id改为非自增
insert测试,获取自增的ID
insert测试
局部变量设置为自增
改变数据库ID为自增
设置mysql主键自增:
Mybatis - Plus 的 主键策略
配置主键生成策略
同hibernate一样,也支持主键生成策略
lambdaQueryWrapper