在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了。