mybatis-plus Iservice 单个新增
@RequestMapping(value = "/add", method = RequestMethod.POST)
public boolean add(@RequestBody User user) {
ValidatorUtils.validateEntity(user, AddGroup.class);
user.setCreateTime(new Date());
user.setDbSource("testdb01");
return userService.save(user);
}
数据库数据,主键Id非常长,不连续自增
批量新增
@RequestMapping(value = "/add2", method = RequestMethod.POST)
public boolean add2(@RequestBody List<User> userList) {
ValidatorUtils.validateEntity(userList, AddGroup.class); // AddGroup.class
boolean b = userService.saveBatch(userList);
// boolean b = userService.saveOrUpdateBatch(userList);
return b;
}
解决办法:
在实体对象主键上面添加@TableId(type = IdType.AUTO)
@TableId(value = “id”)
private Integer id;
我们可以设置主键的生成方式
@TableId(value = “id”,type = IdType.INPUT) 这种方式是主键手动输入
主键生成方式类型如下(IdType):
public enum IdType {
AUTO(0), // 数据库ID自增
NONE(1), // 该类型为未设置主键类型
INPUT(2), // 用户输入ID
ID_WORKER(3), // 全局唯一ID
UUID(4), // 全局唯一ID
ID_WORKER_STR(5); // 字符串全局唯一ID
private final int key;
private IdType(int key) {
this.key = key;
}
public int getKey() {
return this.key;
}
}
mybatis plus默认使用全局唯一的数字类型
ID_WORKER(2, “全局唯一ID”),mybatis-plus 默认是生成一个长数字字符串(编码不同可能结尾带有字母),生成的ID格式:ccba0a05fcbe46898304d5213d2b5518
ID_WORKER调用IdWorker的getId()方法,生成一个与时间相关的主键id