MyBatis新增操作设置完获取新增主键后,该框架是把主键值放到了参数对象上,获取主键值需要用参数对象去get主键值
一. useGeneratedKeys=true
<insert id="insert" parameterType="Entity" useGeneratedKeys="true" keyProperty="id">
insert into table_A (column_1, column_2, ...) values(#{property1}, #{property2}, ...)
</insert>
<!-- MyBatis3.4.0之后支持批量插入并获取自增主键值 -->
<insert id="batchInsert" parameterType="java.util.List" useGeneratedKeys="true" keyProperty="id" keyColumn="id">
insert into table_A (column_1, column_2, ...) values
<foreach collection="list" item="item" separator=",">
(#{item.property1}, #{item.property2}, ...)
</foreach>
</insert>
二. selectKey
<insert id="insert" parameterType="Entity">
<!--
selectKey:会将 SELECT LAST_INSERT_ID()的结果放入到传入的 entity的主键里面;
keyProperty:对应的 entity中的主键的属性名,跟数据库的主键对应;
order:AFTER 表示 SELECT LAST_INSERT_ID() 在insert执行之后执行,多用与自增主键;
BEFORE 表示 SELECT LAST_INSERT_ID() 在insert执行之前执行,这种适合那种主键不是自增的类型;
resultType:主键类型;
-->
<selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer">
SELECT LAST_INSERT_ID()
</selectKey>
insert into table_A (column_1, column_2, ...) values(#{property1}, #{property2}, ...)
</insert>
网友评论