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