问题,需求:在添加了信息之后期望返回添加的该条信息的主键值
解决方式:
1.数据库(如MySQL,SQLServer)支持auto-generated key field的情况
<insert id="add" parameterType="Student" useGeneratedKeys="true" keyProperty="id">
insert into TStudent(name, age) values(#{name}, #{age})
</insert>
useGeneratedKeys="true"相当于打开开关,keyProperty="id",设置主键对应属性名,传入parameterType中的该属性
2、selectkey
<insert id="add" parameterType="Student">
<selectKey keyProperty="id" order="AFTER" resultType="Integer">
SELECT LAST_INSERT_ID()
</selectKey>
insert into TStudent(name, age) values(#{name}, #{age})
</insert>
selectKey ,keyProperty 对应的传入的Student中的主键的属性名,这里是 Student 中的id,
order AFTER 表示 SELECT LASTINSERTID() 在insert执行之后执行,多用与自增主键,
BEFORE表示SELECT LASTINSERTID() 在insert执行之前执行,这样的话就拿不到主键了,这种适合那种主键不是自增的类型resultType 主键类型