INSERT语句返回数据库生成的主键

INSERT语句返回数据库生成的主键

开发过程遇到需要将数据插入到库中,再对该条数据进行状态编辑
可以在xml这样设置

<insert id="insert" parameterType="com.xxx.xxx.Entiiy" useGeneratedKeys="true" keyProperty="id">
        insert into table_name (name, value, type)
        values (#{name}, #{value}, #{type})
</insert>

Entiiy实体为

public class Entiiy{
	/**
	 * 主键id,数据库自动生成
	 */
	private Long id;
	/**
	 * 名称
	 */
	private String name;
	/**
	 * 值
	 */
	private String value;
	/**
	 * 类型
	 */
	private boolean type;
}

流程如下

Entiiy entity = new Entiiy();
entity.setName("张三");
entity.setValue("不吃香菜");
entity.setType(false);
insert(entity);

这个时候,insert执行后会把id赋值到Entity上
我们可以下一步,获取到数据库自动生成的主键ID

Entiiy entity = new Entiiy();
entity.setName("张三");
entity.setValue("不吃香菜");
entity.setType(false);
insert(entity);
//获取id
Long id = entity.getId();
//可以通过id进行后续业务操作刚插入的数据
.......

其中主要是配置是

parameterType=“com.xxx.xxx.Entiiy”
useGeneratedKeys=“true”
keyProperty=“id”

对于支持自动生成记录主键的数据库,useGeneratedKeys设置为true,表示在执行完insert插入语句后,会把数据库自动生成的主键ID返回。
这里我们设置useGeneratedKeys=“true” 并且标识主键字段为 keyProperty=“id”
那么在执行完insert语句后就会把对应的keyProperty,映射返回到参数类型parameterType的配置里。

在一些数据库中,可以使用 `INSERT INTO` 语句插入数据时直接返回自动生成主键 ID。不过由于不同数据库的实现方式不同,因此具体的实现方法也各不相同。 下面以 MySQL 和 PostgreSQL 数据库为例,介绍如何使用 `INSERT INTO` 语句返回自动生成主键 ID。 1. MySQL 在 MySQL 中,可以使用 `LAST_INSERT_ID()` 函数获取上次插入操作生成的自增列的值。因此可以在插入数据时,先插入数据,再通过 `SELECT LAST_INSERT_ID()` 获取自动生成主键 ID。 ```sql INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...); SELECT LAST_INSERT_ID(); ``` 在 Java 代码中,可以使用 `PreparedStatement` 对象的 `getGeneratedKeys` 方法获取自动生成主键 ID。具体实现步骤如下: ```java String sql = "INSERT INTO user(name, age) VALUES(?, ?)"; PreparedStatement statement = connection.prepareStatement(sql, Statement.RETURN_GENERATED_KEYS); statement.setString(1, "Tom"); statement.setInt(2, 18); statement.executeUpdate(); ResultSet resultSet = statement.getGeneratedKeys(); if (resultSet.next()) { Long id = resultSet.getLong(1); // 获取自动生成主键 ID } ``` 2. PostgreSQL 在 PostgreSQL 中,可以使用 `RETURNING` 子句在插入数据时返回自动生成主键 ID。 ```sql INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...) RETURNING column_name; ``` 在 Java 代码中,可以使用 `PreparedStatement` 对象的 `executeQuery` 方法执行 SQL 语句,并获取自动生成主键 ID。具体实现步骤如下: ```java String sql = "INSERT INTO user(name, age) VALUES(?, ?) RETURNING id"; PreparedStatement statement = connection.prepareStatement(sql); statement.setString(1, "Tom"); statement.setInt(2, 18); ResultSet resultSet = statement.executeQuery(); if (resultSet.next()) { Long id = resultSet.getLong("id"); // 获取自动生成主键 ID } ``` 注意:在使用 `RETURNING` 子句时,需要指定返回的列名或列的索引。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值