在Mysql中添加数据时,自增的id如何返回id值(xml版)

一般常用的有两种方法:

第一种:添加useGeneratedKeys="true" , keyProperty="id",这两个标签

 <insert id="insert" parameterType="CheckGroup" useGeneratedKeys="true" keyProperty="id">
        insert into t_checkgroup(id, code, name, helpCode, sex, remark, attention)
        values (#{id}, #{code}, #{name}, #{helpCode}, #{sex}, #{remark}, #{attention})
 </insert>

 useGeneratedKeys设置为 true 时,表示如果插入的表id以自增列为主键,则允许 JDBC 支持自动生成主键,并可将自动生成的主键id返回。
useGeneratedKeys参数只针对 insert 语句生效,默认为 false;

当主键id自增的时候返回这个自增的id给keyProperty指定的实体类中的id这个对应数据库主键的属性。

 也可以一下这里Java保存到数据库后返回主键ID - 华安√ - 博客园 (cnblogs.com)

 第二种:添加

<selectKey keyProperty="id" order="AFTER" resultType="integer">
    select LAST_INSERT_ID()
</selectKey>

selectKey标签详解(*)_Firm陈的博客-优快云博客_selectkey标签

在使用 MySQL 数据库,插入记录后获取自 ID 是常见的需求之一。MySQL 提供了多种方式来实现这一目标,以下是几种常用的方法。 ### 使用 `LAST_INSERT_ID()` 函数 `LAST_INSERT_ID()` 是 MySQL 提供的一个内置函数,用于返回最近一次插入操作中生成的自 ID 。这个函数在一个连接会话中是线程安全的,因此可以放心使用而不用担心其他客户端的影响。 #### 示例 SQL 语句: ```sql INSERT INTO users (name, email) VALUES ('张三', 'zhangsan@example.com'); SELECT LAST_INSERT_ID(); ``` 这段 SQL 代码首先向 `users` 表中插入了一条记录,然后通过 `SELECT LAST_INSERT_ID();` 获取刚刚插入记录的自 ID [^2]。 ### 在 Java 中使用 `Statement.RETURN_GENERATED_KEYS` 如果你正在使用 Java 编写应用程序,并且希望通过 JDBC 操作 MySQL 数据库,可以通过设置 `Statement.RETURN_GENERATED_KEYS` 来获取自动生成的主键。 #### 示例 Java 代码: ```java String sql = "INSERT INTO users (name, email) VALUES (?, ?)"; try (PreparedStatement pstmt = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS)) { pstmt.setString(1, "李四"); pstmt.setString(2, "lisi@example.com"); int affectedRows = pstmt.executeUpdate(); if (affectedRows == 0) { throw new SQLException("Creating user failed, no rows affected."); } try (ResultSet generatedKeys = pstmt.getGeneratedKeys()) { if (generatedKeys.next()) { System.out.println("Generated key: " + generatedKeys.getLong(1)); } else { throw new SQLException("Creating user failed, no ID obtained."); } } } ``` 在这个例子中,我们创建了一个带有 `Statement.RETURN_GENERATED_KEYS` 参数的 `PreparedStatement` 实例,执行完插入操作后,调用 `getGeneratedKeys()` 方法来获取结果集,进而得到自 ID [^3]。 ### 使用 MyBatis 框架 对于使用 MyBatis 框架的开发者来说,MyBatis 提供了 `<selectKey>` 元素来处理这种情况。可以在插入语句之后立即查询 `LAST_INSERT_ID()` 并将其映射到实体类的属性中。 #### 示例 XML 映射文件配置: ```xml <insert id="insertUser"> <selectKey keyProperty="id" order="AFTER" resultType="int"> SELECT LAST_INSERT_ID() </selectKey> INSERT INTO users (name, email) VALUES (#{name}, #{email}) </insert> ``` 这里定义了一个名为 `insertUser` 的插入操作,在插入数据之后,会执行 `<selectKey>` 标签内的 SQL 查询,将最新的自 ID给 `User` 对象的 `id` 属性 [^2]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值