08
2020
11

MyBatis在insert插入操作时如何返回主键ID?

数据库为 MySql 时:

 

<insert id="insert" parameterType="com.test.User" keyProperty="userId" useGeneratedKeys="true">

 

“keyProperty”表示返回的id要保存到对象的属性中,“useGeneratedKeys”表示主键id为自增长模式。

 

数据库为Oracle时:

 

<insert id="insert" parameterType="com.test.User">

    <selectKey resultType="INTEGER" order="BEFORE" keyProperty="userId">

        SELECT SEQ_USER.NEXTVAL as userId from DUAL

    </selectKey>

    insert into user 

        (user_id, user_name, modified, state)

    values 

        (#{userId,jdbcType=INTEGER}, #{userName,jdbcType=VARCHAR}, #{modified,jdbcType=TIMESTAMP},#{state,jdbcType=INTEGER})

</insert>

 

由于Oracle没有自增长这一说法,只有序列这种自增的形式,所以不能再使用“useGeneratedKeys”属性。而是使用<selectKey>将ID获取并赋值到对象的属性中,insert插入操作时正常插入id。

« 上一篇 下一篇 »

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。