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