怎样实现 mybatis 增加(insert)数据时返回自增ID

最近做的项目都是存的自增ID,就遇到了一个问题,存到数据库后,怎样马上得到他的主键ID?我之前用的都是UUID,这样的话我能得到主键ID,但是自增的话,就得不到了,我就蒙了,但是今天同事告诉了我一个好的解决方法,分享给大家!首先说一下自增ID和UUID各自的优缺点:

自增主键

自增ID就是在设计标的时候设置AUTO_INCREMENT,就可以实现主键ID自增,能够保证字段的原子性.。

优点

数据库自动编号,速度快,而且是增量增长,按顺序存放,对于检索非常有利;数字型,占用空间小,易排序,在程序中传递也方便;如果通过非系统增加记录时,可以不用指定该字段,不用担心主键重复问题。

缺点

因为自动增长,在手动要插入指定ID的记录时会显得麻烦,尤其是当系统与其它系统集成时,需要数据导入时,很难保证原系统的ID不发生主键冲突(前提是老系统也是数字型的)。

UUID

UUID含义是通用唯一识别码 (Universally Unique Identifier),指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的。

优点

出现数据拆分、合并存储的时候,能达到全局的唯一性

缺点

影响插入速度, 并且造成硬盘使用率低,uuid之间比较大小相对数字慢不少, 影响查询速度。uuid占空间大, 如果你建的索引越多, 影响越严重

上述优缺点,仿照一个博主写的,出处:https://blog.csdn.net/rocling/article/details/83116950 ; 接下来解决咱自己的问题,上代码:
在这里插入图片描述
上述中keyProperty 指定对应返回的主键就OK!非常简单,service层取用的时候这样写就可以啦!
在这里插入图片描述
希望此篇文章对大家有所帮助!!

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MyBatis Plus 中,插入数据返回自增 ID 可以通过以下步骤实现: 1. 创建一个实体类,用于映射数据库表的字段和属性。 2. 在实体类中,标注 `@TableName` 注解,指定对应的数据库表名。 3. 在实体类中,使用 `@TableId` 注解标注主键字段,并设置 `@TableId(type = IdType.AUTO)`,表示使用数据自增主键。 4. 调用 MyBatis Plus 提供的 `insert` 方法插入数据,插入成功后,自增 ID 将会被赋值到实体类对应的字段上。 以下是一个示例代码: ```java import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import org.springframework.stereotype.Repository; import org.springframework.stereotype.Service; @Repository public interface UserMapper extends BaseMapper<User> { } @Service public class UserServiceImpl extends ServiceImpl<UserMapper, User> implements UserService { @Override public boolean saveUser(User user) { return save(user); } } @TableName("user") public class User { @TableId(type = IdType.AUTO) private Long id; private String name; private Integer age; // 省略 getter 和 setter } ``` 在上述示例中,`User` 类是一个实体类,对应数据库中的 `user` 表。`id` 字段使用 `@TableId(type = IdType.AUTO)` 注解标注为自增主键。 在 `UserServiceImpl` 类中,调用 `save` 方法插入数据,插入成功后,自增 ID 将会被赋值到 `user` 对象的 `id` 字段上。 你可以根据你的需求在 `UserServiceImpl` 类中添加其他方法,如查询、更新等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值