龙空技术网

如何获取自动生成的(主)键值

面试题问答 85

前言:

此时咱们对“oracle建立seq”大体比较讲究,咱们都想要分析一些“oracle建立seq”的相关内容。那么小编同时在网络上收集了一些关于“oracle建立seq””的相关知识,希望各位老铁们能喜欢,我们一起来了解一下吧!

在 MyBatis 中获取自动生成的主键值可以通过两种方式实现:

利用数据库的自增特性,在插入数据时,数据库会自动生成主键值,可以在插入完成后通过

SELECT LAST_INSERT_ID() 语句获取到主键值。在 MyBatis 中,可以使用

标签来实现,在插入语句执行完成后,通过执行 SELECT LAST_INSERT_ID() 获取到自增的主键值,然后将该值设置到实体对象的属性中。

例如,假设有以下的 User 实体类:

public class User {   private Long id;   private String name;   private Integer age;   // getter 和 setter 方法省略 }

在插入数据时,可以使用 标签来插入数据,并在该标签内使用 标签来获取自动生成的主键值,然后将该值设置到 User 实体对象中:

<insert id="insertUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">   INSERT INTO user(name, age) VALUES (#{name}, #{age}) <selectKey keyProperty="id" resultType="Long" order="AFTER">     SELECT LAST_INSERT_ID() </selectKey> </insert>

其中,useGeneratedKeys="true" 表示启用主键自动生成特性,keyProperty="id" 表示将自动生成的主键值设置到 User 实体类的 id 属性中, 标签中的 resultType 属性表示返回结果的类型,order="AFTER" 表示在插入数据后执行 SELECT LAST_INSERT_ID() 语句获取自动生成的主键值。

利用数据库的序列特性,在插入数据时,可以通过调用序列获取到主键值。在 MyBatis 中,可以使用

标签结合序列来获取主键值。

例如,在 Oracle 数据库中,可以使用以下的语句来创建序列:

CREATE SEQUENCE user_seq INCREMENT BY 1 START WITH 1 NOMAXVALUE NOCYCLE;

然后,在插入数据时,可以使用 标签来插入数据,并在该标签内使用 标签结合序列来获取主键值,然后将该值设置到 User 实体对象中:

<insert id="insertUser" parameterType="User">   <selectKey keyProperty="id" resultType="Long" order="BEFORE">     SELECT user_seq.NEXTVAL FROM DUAL 	</selectKey>	INSERT INTO user(id, name, age) VALUES (#{id}, #{name}, #{age}) </insert>

其中, 标签中的 SQL 语句使用序列来获取主键值,order="BEFORE" 表示在插入数据前执行 SELECT user_seq.NEXTVAL 语句获取序列值。在插入数据后,MyBatis 将自动生成的主键值设置到 User 实体类的 id 属性中。

标签: #oracle建立seq #oracle的主键sequence设置的