例如表结构:
1CREATE TABLE person ( 2 id BIGINT NOT NULL AUTO_INCREMENT PRIMARY KEY, 3 name VARCHAR(30) 4);
实体类:
1public class Person { 2 private long id; 3 private String name; 4 ... 5}
Mapper接口:
1public interface PersonMapper { 2 void createPerson(Person newPerson); 3}
则通过如下的mapper配置,可以实现当调用PersonMapper.createPerson(Person)时,Person的id将会被自动设置。(使用MySQL数据库)
1<mapper namespace="..."> 2 <insert id="createPerson" statementType="PREPARED" useGeneratedKeys="true" keyProperty="id"> 3 <![CDATA[ 4 INSERT INTO person (name) VALUES (#{name}); 5 ]]> 6 <selectKey keyProperty="id" resultType="_long" order="AFTER"> 7 <![CDATA[ 8 SELECT LAST_INSERT_ID() AS id 9 ]]> 10 </selectKey> 11 </insert> 12</mapper>
如果使用的是其他数据库产品的话,可以通过修改selectKey下所对应的当前主键的获取语句来得到相同的效果。