首先,在数据库中建序列: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>


Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐