关注微信公众号 太平洋学习网 扫描二维码
最新消息:关注【太平洋学习网】微信公众号,可以获取全套资料,【全套Java基础27天】【JavaEE就业视频4个月】【Android就业视频4个月】

mybatis oracle插入insert数据返回主键自增长ID的解决方法

Javaweb admin 浏览 评论

在mybatis oracle多表插入的过程中,有时候我们需要oracle执行insert插入操作时返回主键自增长id,由于oracle的自增长需要sequence序列才能实现自增长,所以请先创建一个序列表,实现oracle数据库id的自增长,以下是oracle的sequence序列的创建方法:

http://tpyyes.com/a/mysql_oracle/2016/1116/26.html

创建完之后就可以通过下面的形式返回oracle的自增长主键id了,S_TBL_OA_APPROVAL_SET是序列表名称:

  <insert id="insertSelectiveReturnId" parameterType="cn.com.xf.model.TblOaApprovalSet">
     <selectKey resultType="java.lang.Integer" order="BEFORE" keyProperty="id">  
       SELECT S_TBL_OA_APPROVAL_SET.NEXTVAL as ID from DUAL  
    </selectKey>
    insert into TBL_OA_APPROVAL_SET
    <trim prefix="(" suffix=")" suffixOverrides=",">
        ID,
      <if test="deployId != null">
        DEPLOY_ID,
      </if>
      <if test="companyId != null">
        COMPANY_ID,
      </if>
      <if test="deptId != null">
        DEPT_ID,
      </if>
      <if test="typeId != null">
        TYPE_ID,
      </if>
      <if test="createDate != null">
        CREATE_DATE,
      </if>
    </trim>
    <trim prefix="values (" suffix=")" suffixOverrides=",">
		#{id},
      <if test="deployId != null">
        #{deployId,jdbcType=VARCHAR},
      </if>
      <if test="companyId != null">
        #{companyId,jdbcType=DECIMAL},
      </if>
      <if test="deptId != null">
        #{deptId,jdbcType=VARCHAR},
      </if>
      <if test="typeId != null">
        #{typeId,jdbcType=DECIMAL},
      </if>
      <if test="createDate != null">
        #{createDate,jdbcType=TIMESTAMP},
      </if>
    </trim>
  </insert>

这个就是将序列返回赋值给了oracle的ID,然后通过keyProperty="id"传给了实体类id属性作为值,在values里面我们就可以用#{id}来获取值并插入到oracle数据库中,插入之后就会有id返回回来,我们通过“实体类.getId();”就可以获取返回的oracle主键自增长id了。

来源网站:太平洋学习网,转载请注明出处:http://www.tpyyes.com/a/javaweb/2016/1229/34.html