java实现数据库批量插入

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>

  

posted @ 2022-02-15 16:55  梦幻&浮云%  阅读(1574)  评论(0编辑  收藏  举报