架构师

您现在的位置是:首页 > 技术博客 > 框架整合

框架整合

mybatis使用Oracle序列(sequence)主键自增长的几种方式

架构师小跟班 2019-08-30 框架整合
首先,在数据库中建序列:SEQ_T_RESOURCE第一种:会在传入该方法的的参数集合中添加主键元素,相当于:map.put("RES_ID",xxx);<insert id="saveForImport" parameterType="map"> <

首先,在数据库中建序列:SEQ_T_RESOURCE

第一种:会在传入该方法的的参数集合中添加主键元素,相当于:map.put("RES_ID",xxx);

<insert id="saveForImport" parameterType="map">
    <selectKey keyProperty="RES_ID" order="BEFORE" resultType="string">
        SELECT SEQ_T_RESOURCE.NEXTVAL AS RES_ID FROM DUAL
    </selectKey>
    INSERT INTO T_RESOURCE(
        RES_ID,
        RES_NO,
        RES_NAME)
        values(
        #{RES_ID},
        #{RES_NO},
    #{RES_NAME,jdbcType=VARCHAR})
</insert>

第二种:不需要返回插入的主键值

<insert id="saveForImport" parameterType="map">
    INSERT INTO T_RESOURCE(
        RES_ID,
        RES_NO,
        RES_NAME)
        values(
        SEQ_T_RESOURCE.NEXTVAL,
        #{RES_NO},
    #{RES_NAME,jdbcType=VARCHAR})
</insert>

第三种:会在传入该方法的的参数集合中添加主键元素,相当于:map.put("RES_ID",xxx);

<insert id="doSaveTaskDetail" parameterType="map" >
    insert into tb_cablecheck_taskdetail(
        DETAIL_ID,
        TASK_ID)
        values
        (SQP_TB_CABLECHECK_TASK_DETAIL.nextVAL,
        #{TASK_ID},
        #{INSPECT_OBJECT_ID})
        <selectKey resultType="java.lang.Integer" order="AFTER" keyProperty="DETAIL_ID">
            SELECT SQP_TB_CABLECHECK_TASK_DETAIL.CURRVAL FROM DUAL
        </selectKey>
</insert>

第四种:

先写个方法,获取recordId,然后作为参数传入插入表的SQL

int recordId = checkOrderDao.getRecordId();

<select id="getRecordId" resultType="int">
select SEQ_TB_EQPRECORD.NEXTVAL from DUAL
</select>
<insert id="insertEqpRecord" parameterType="map">
    insert into tb_cablecheck_record
      (RECORD_ID,
       EQP_ID,
       EQP_NO,
       EQP_NAME)
    values
      (#{recordId},
       #{eqpId},
       #{eqpNo},
       #{eqpName})
</insert>


文章评论