mybatis-plus Iservice主键策略设置、主键自增问题

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

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值