1、mysql批量插入寫法
<!-- 接收 信息 批量 插入數據 改狀態--> <insert id="insertAppMonitorResults" parameterType="List" useGeneratedKeys="false"> insert into app_monitor_result (id,monitor_id,app_id,abstracts,keywords,content,exception_type,file_path,media_type,create_time) values <foreach collection="list" item="MonitorResult" index="index" separator="," > (nextval("seq_appmonitorresult"),#{MonitorResult.monitorId}, #{MonitorResult.appId}, #{MonitorResult.abstracts}, #{MonitorResult.keywords}, #{MonitorResult.content}, #{MonitorResult.exceptionType}, #{MonitorResult.filePath},#{MonitorResult.mediaType},#{MonitorResult.createTime}) </foreach> </insert>
ids太多的情況用此方法,因為in只支持1000以內的 <select id="selectBatchByIds" resultMap="TfMediaMaterialMap"> select <include refid="materialColSql"/> from tf_media_material a where a.status = 'E' and ( a.id in <foreach collection="ids" index="index" item="item" open="(" separator="," close=")"> <if test="(index % 999) == 998"> NULL ) OR a.id IN (</if>#{item} </foreach> ) </select>
2、ora批量插入數據
<!-- 插入數據 --> <insert id="insertViresLibrary" parameterType="java.util.List"> INSERT INTO VIRES_LIBRARY (ID,BIG_TYPE,SMALL_TYPE,SHOW,DESCRIPTION,TYPE,DELETED,CREATE_TIME,CHARACTERISTIC_VALUE,USER_ID,REMARKS) SELECT SEQ_VIRES_LIBRARY.NEXTVAL ID, A.* FROM( <foreach collection="list" item="item" index="index" separator="UNION ALL"> SELECT #{item.bigType,jdbcType=INTEGER} BIG_TYPE , #{item.smallType,jdbcType=VARCHAR} SMALL_TYPE, #{item.show,jdbcType=VARCHAR} SHOW, #{item.description,jdbcType=VARCHAR} DESCRIPTION, #{item.type,jdbcType=INTEGER} TYPE, #{item.deleted,jdbcType=VARCHAR} DELETED, #{item.createTime} CREATE_TIME, #{item.characteristicValue,jdbcType=VARCHAR} CHARACTERISTIC_VALUE , #{item.userId,jdbcType=INTEGER} USER_ID , #{item.remarks,jdbcType=INTEGER} REMARKS FROM dual </foreach> )A </insert>