Java向数据库中插入数据后获取自增ID的常用方法

 更新时间:2023年11月23日 14:32:20   作者:霁月清风与谁同  
有时候因为新增的需求需要获取刚刚新增的数据的自增的主键ID,下面这篇文章主要给大家介绍了关于Java向数据库中插入数据后获取自增ID的常用方法,文中通过代码介绍的非常详细,需要的朋友可以参考下

概要

在进行数据库插入操作后,获取自增ID的方式取决于你使用的数据库以及持久层框架。这里将提供几种常见的情况下获取自增ID的方法

1、MyBatis 使用 MySQL 数据库

如果在 MyBatis 中使用 MySQL 数据库进行插入操作,可以通过以下方式获取自增ID

在插入操作后使用 SELECT LAST_INSERT_ID() 查询最后插入的自增ID。

<insert id="insertUser" parameterType="User">
    <!-- 插入语句 -->
</insert>

<selectKey resultType="java.lang.Long" keyProperty="id" order="AFTER">
    SELECT LAST_INSERT_ID()
</selectKey>

或者,可以在插入操作中使用 useGeneratedKeys=“true” 属性。

<insert id="insertUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">
    <!-- 插入语句 -->
</insert>

在这两种情况下,插入后会将自增ID设置到 User 对象的 id 属性中。

2、 MyBatis 使用 PostgreSQL 数据库

对于 PostgreSQL 数据库,可以在插入操作后通过 returning 子句获取自增ID

<insert id="insertUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">
    <!-- 插入语句 -->
    RETURNING id
</insert>

3、MyBatis-Plus 使用任何数据库

如果使用 MyBatis-Plus 进行数据库操作,不需要显式获取自增ID。MyBatis-Plus 会自动将插入后的自增ID设置到实体类的相应属性中。你只需要在实体类中将自增ID的属性与数据库字段进行映射即可。

public class UserService {

    @Autowired
    private UserMapper userMapper;

    public Long insertUser(User user) {
        userMapper.insert(user);
        return user.getId(); // 获取自增 ID
    }

    // 其他方法...
}

在插入操作后,id 属性会被设置为插入生成的自增ID。

总结

无论使用哪种方式,都可以轻松获取插入后的自增ID,具体取决于您的数据库和持久层框架的支持。

到此这篇关于Java向数据库中插入数据后获取自增ID的常用方法的文章就介绍到这了,更多相关Java插入数据后获取自增ID内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • lombok注解介绍小结

    lombok注解介绍小结

    lombok是一个可以帮助我们简化java代码编写的工具类,这篇文章主要介绍了lombok注解介绍小结,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-11-11
  • Spring Boot 配置 Hikari 数据库连接池的操作代码

    Spring Boot 配置 Hikari 数据库连接池的操作代码

    数据库连接池是一个提高程序与数据库的连接的优化,连接池它主要作用是提高性能、节省资源、控制连接数、连接管理等操作,这篇文章主要介绍了SpringBoot配置Hikari数据库连接池,需要的朋友可以参考下
    2023-09-09
  • Java源码解析之Gateway请求转发

    Java源码解析之Gateway请求转发

    今天给大家带来的是关于Java的相关知识,文章围绕着Gateway请求转发展开,文中有非常详细介绍及代码示例,需要的朋友可以参考下
    2021-06-06
  • Redis结合AOP与自定义注解实现分布式缓存流程详解

    Redis结合AOP与自定义注解实现分布式缓存流程详解

    项目中如果查询数据是直接到MySQL数据库中查询的话,会查磁盘走IO,效率会比较低,所以现在一般项目中都会使用缓存,目的就是提高查询数据的速度,将数据存入缓存中,也就是内存中,这样查询效率大大提高
    2022-11-11
  • Spring AOP注解案例及基本原理详解

    Spring AOP注解案例及基本原理详解

    这篇文章主要介绍了Spring AOP注解案例及基本原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-06-06
  • Java double类型比较大小详解

    Java double类型比较大小详解

    这篇文章主要介绍了Java double类型比较大小,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • JSP 开发之 releaseSession的实例详解

    JSP 开发之 releaseSession的实例详解

    这篇文章主要介绍了JSP 开发之 releaseSession的实例详解的相关资料,需要的朋友可以参考下
    2017-07-07
  • 通过实例解析Java类初始化和实例初始化

    通过实例解析Java类初始化和实例初始化

    这篇文章主要介绍了通过实例解析Java类初始化和实例初始化,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-11-11
  • Spring Cloud  Eureka服务治理的实现

    Spring Cloud Eureka服务治理的实现

    服务治理是微服务框架中最为核心和基础的模块,它主要是用来实现各个微服务实例的自动化注册与发现。这篇文章主要介绍了Spring Cloud Eureka服务治理的实现,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • ByteArrayInputStream简介和使用_动力节点Java学院整理

    ByteArrayInputStream简介和使用_动力节点Java学院整理

    ByteArrayInputStream 是字节数组输入流。它继承于InputStream。这篇文章主要介绍了ByteArrayInputStream简介和使用_动力节点Java学院整理,需要的朋友可以参考下
    2017-05-05

最新评论