MyBatis插入数据后如何获取生成的主键

avatar
作者
筋斗云
阅读量:0

在 MyBatis 中,插入数据后可以通过返回主键值来获取生成的主键。以下是几种方法可以实现这一目的:

  1. 使用selectKey元素:可以在插入数据的 SQL 语句中使用selectKey元素来获取生成的主键。例如:
<insert id="insertUser" parameterType="User" useGeneratedKeys="true" keyProperty="id">     INSERT INTO user (username, password) VALUES (#{username}, #{password})     <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Long">         SELECT LAST_INSERT_ID()     </selectKey> </insert> 

在这个例子中,useGeneratedKeys="true"表示要使用自动生成的主键,keyProperty="id"指定主键的属性名,<selectKey>元素中的SELECT LAST_INSERT_ID()表示获取最后插入的主键值。

  1. 使用@Options注解:在接口方法上使用@Options注解,可以指定生成主键的方式。例如:
@Options(useGeneratedKeys = true, keyProperty = "id") @Insert("INSERT INTO user (username, password) VALUES (#{username}, #{password})") void insertUser(User user); 

在这个例子中,useGeneratedKeys = true表示要使用自动生成的主键,keyProperty = "id"指定主键的属性名。

  1. 使用KeyGenerator接口:可以自定义一个KeyGenerator接口来生成主键,并在@SelectKey注解中指定该KeyGenerator。例如:
@Insert("INSERT INTO user (username, password) VALUES (#{username}, #{password})") @SelectKey(statement = "SELECT nextval('user_id_seq')", keyProperty = "id", before = false, resultType = Long.class, keyColumn = "id") void insertUser(User user); 

在这个例子中,@SelectKey注解中的statement属性指定了生成主键的 SQL 语句,keyProperty指定了主键的属性名。

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!