数据库表中有一个自增长字段为id,如何在插入记录之后获得这个id值呢?
比如:
insert into user(username,address,sex,birthday) values(#{username},#{address},#{sex},#{birthday})
执行完后,我们去看数据库,发现多了一条记录:
问题:看了数据库后我们知道自动生成的id是11,如果不看数据库,能不能知道这个id呢?
selectKey 就能解决这个问题!
示例如下:
<insert id="saveUser" parameterType="com.aimin.domain.User">
<selectKey keyProperty="id" keyColumn="id" resultType="int" order="AFTER">
select last_insert_id();
</selectKey>
insert into user(username,address,sex,birthday) values(#{username},#{address},#{sex},#{birthday})
</insert>
说明:
1、keyColumn:数据表中那个自增长的id字段名称
2、keyProperty:数据表的字段和实体类的属性是对应的,在实体类中对应的属性就是keyProperty
3、order:本标签内的语句(这里是 select last_insert_id() )是先执行还是后执行
这里order="AFTER", 先执行 insert into user(username,address,sex,birthday) values(#{username},#{address},#{sex},#{birthday}) 后执行select last_insert_id()