一、Mybatis中自动生成主键
Mybatis 配置文件配置 useGeneratedKeys 参数只针对 insert 语句生效,默认值为 false
在 INSERT 语句中,我们为可以自动生成(auto-generated)主键的列插入值,可以使用useGeneratedKeys
和 keyProperty
属性让数据库生成 auto_increment
列的值,并将生成的值设置到其中一个输入对象属性内。
<insert id="insertStudent" parameterType="Student" useGeneratedKeys="true" keyProperty="studId">
INSERT INTO STUDENTS(NAME, EMAIL, PHONE) VALUES(#{name},#{email},#{phone})
</insert>
这里 STUD_ID
列值将会被数据库自动生成 (如mysql),并且生成的值会被设置到 student 对象的studId
属性上
但是有些数据库如 Oracle 并不支持 AUTO_INCREMENT 列,其使用序列(SEQUENCE)来生成主键值。
假设我们有一个名为 my_seq
的序列来生成 SUTD_ID
主键值。使用如下代码来生成主键:
- drop sequence my_seq
- create sequence my_seq
<insert id="insertStudent" parameterType="Student">
<selectKey keyProperty=