mybatis主键自增长

在数据库中建序列: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>
原文地址:https://www.cnblogs.com/xyhero/p/eddc8b6d74e4fcd335a9c04d00a87165.html