方式一:使用useGeneratedKeys属性
useGeneratedKeys使用主键值
keyProperty:主键属性,添加数据后,将主键值赋值给哪一个对象属性
缺点:当前方式只适用于主键自增的数据库(MySQL),0racle不行
<!--主键回填方式一:此方式只适用于MySQL数据库,Oracle则不适用-->
<insert id="addPerson" parameterType="com.xxx.pojo.Person" useGeneratedKeys="true" keyProperty="pid">
insert into person(pname,paddress) values(#{pname},#{address})
</insert>
方式二:使用标签函数
selectKey:返回主键的标签
keyColumn:返回主键的字段
keyproperty:返回的字段值交给哪一个对象属性接收
order:返回时机,定义了返回主键是在添加前还是后
<!--主键回填方式二:适用于多种数据库-->
<insert id="addPerson" parameterType="com.xxx.pojo.Person">
<selectKey keyColumn="pid" keyProperty="pid" resultType="int" order="AFTER">
select LAST_INSERT_ID()
</selectKey>
insert into person(pname,paddress) values(#{pname},#{address})
</insert>