首页 » PHP教程 » phpinsert返回id技巧_Mybatis 在 insert 插入操作后若何返回主键 id

phpinsert返回id技巧_Mybatis 在 insert 插入操作后若何返回主键 id

访客 2024-12-17 0

扫一扫用手机浏览

文章目录 [+]

<insert id="insertUser" parameterType="User" useGeneratedKeys="true"> insert into user (name, age) values (#{name}, #{age})</insert>设置 keyProperty 属性

keyProperty 属性的浸染是指定主键 ID 赋值的目标属性。
在配置文件中,我们可以在 insert 元素中设置 keyProperty 属性:

<insert id="insertUser" parameterType="User" useGeneratedKeys="true" keyProperty="id"> insert into user (name, age) values (#{name}, #{age})</insert>

利用 JDBC 的 getGeneratedKeys 方法获取主键 ID 的办法非常大略,但须要把稳的是,该方法只适用于支持自动天生主键的数据库,如 MySQL、Oracle 等。

phpinsert返回id技巧_Mybatis 在 insert 插入操作后若何返回主键 id

二、利用 SELECT LAST_INSERT_ID() 函数

对付不支持 JDBC 的 getGeneratedKeys 方法的数据库,我们可以利用 SELECT LAST_INSERT_ID() 函数获取插入记录的主键 ID。
在 MyBatis 中,我们可以通过设置 useGeneratedKeys 和 keyProperty 属性来利用该方法。

phpinsert返回id技巧_Mybatis 在 insert 插入操作后若何返回主键 id
(图片来自网络侵删)

设置 useGeneratedKeys 属性

在配置文件中,我们可以在 insert 元素中设置 useGeneratedKeys 属性,并将其值设为 false:

<insert id="insertUser" parameterType="User" useGeneratedKeys="false"> insert into user (name, age) values (#{name}, #{age}) <selectKey resultType="java.lang.Integer" keyProperty="id" order="AFTER"> SELECT LAST_INSERT_ID() </selectKey></insert>利用 SELECT LAST_INSERT_ID() 函数

在 insert 元素结束后,我们可以利用 SELECT LAST_INSERT_ID() 函数获取插入记录的主键 ID:

<insert id="insertUser" parameterType="User" useGeneratedKeys="false"> insert into user (name, age) values (#{name}, #{age}) <selectKey resultType="java.lang.Integer" keyProperty="id" order="AFTER"> SELECT LAST_INSERT_ID() </selectKey></insert>

利用 SELECT LAST_INSERT_ID() 函数获取主键 ID 的办法也比较大略,但须要把稳的是,该方法只适用于支持 SELECT LAST_INSERT_ID() 函数的数据库,如 MySQL 等。

三、利用 UUID 作为主键

在某些情形下,我们可能并不须要数据库自动天生主键,而是须要自定义主键。
在这种情形下,我们可以利用 UUID 作为主键,MyBatis 中也供应了相应的支持。

定义主键为 UUID

在定义表构造时,我们可以将主键定义为 UUID 类型:

CREATE TABLE user ( id VARCHAR(36) PRIMARY KEY, name VARCHAR(20), age INT);利用 UUID 天生主键

在 MyBatis 中,我们可以利用 UUID 天生主键,并将其赋值给工具的 id 属性。
在配置文件中,我们可以在 insert 元素中利用 selectKey 元向来天生主键:

<insert id="insertUser" parameterType="User"> <selectKey resultType="java.lang.String" keyProperty="id" order="BEFORE"> SELECT UUID() </selectKey> insert into user (id, name, age) values (#{id}, #{name}, #{age})</insert>

在 selectKey 元素中,我们利用 SELECT UUID() 函数天生主键,并将其赋值给工具的 id 属性。
这样,在实行插入操作时,id 属性就会被赋值为天生的 UUID。

利用 UUID 作为主键的办法可以灵巧地知足不同的需求,但须要把稳的是,在某些场景下,UUID 的性能可能不如自增主键。

标签:

相关文章