数据库为 MySql 时:
1. <insert id="insert" parameterType="com.test.User" keyProperty="userId"
useGeneratedKeys="true" >
“keyProperty”表示返回的 id 要保存到对象的那个属性中,“useGeneratedKeys”表示主键 id 为自增长模式。
MySQL 中做以上配置就 OK 了
数据库为 Oracle 时:
1. <insert id="insert" parameterType="com.test.User">
2. <selectKey resultType="INTEGER" order="BEFORE" keyProperty="userId">
3. SELECT SEQ_USER.NEXTVAL as userId from DUAL
4. </selectKey>
5. insert into user (user_id, user_name, modified, state)
6. values (#{userId,jdbcType=INTEGER}, #{userName,jdbcType=VARCHAR},
#{modified,jdbcType=TIMESTAMP}, #{state,jdbcType=INTEGER})
7. </insert>
由于 Oracle 没有自增长一说法,只有序列这种模仿自增的形式,所以不能再使用“useGeneratedKeys”属性。
而是使用<selectKey>将 ID 获取并赋值到对象的属性中,insert 插入操作时正常插入 id。 |
|