mapper.xml 语法 

<insert id="insertxxx"  parameterType="java.util.List" 
        useGeneratedKeys="false" >

    INSERT ALL
    <foreach collection="list" item="log" >
         into table_name
        <trim prefix="(" suffix=")" suffixOverrides=",">
            F_LOG_ID,
            F_OPER_RESOURCENUM,
            F_IS_USE,
            <if test="log.createManCode != null">
                F_CREATE_MANCODE,
            </if>
            <if test="log.createManName != null">
                F_CREATE_MANNAME,
            </if>
            <if test="log.targetNum != null">
                F_OPER_OBJECTID,
            </if>
            F_CREATE_TIME
        </trim>
        <trim prefix="values (" suffix=")" suffixOverrides=",">
            sys_guid(),
            '807',
            1,
            <if test="log.createManCode != null">
                #{log.createManCode},
            </if>
            <if test="log.createManName != null">
                #{log.createManName},
            </if>
            <if test="log.targetNum != null">
                #{log.targetNum},
            </if>
            TO_CHAR(sysdate,'YYYYMMDDHH24MISS')
        </trim>
 
    </foreach>
    select 1 from dual
</insert>

 java代码

//使用批量插入
List<OpLogReq> opLogTempList = new ArrayList<>();
for (int i = 0; i < resultList.size();) {

	OpLogReq opLogReq = new OpLogReq();
	opLogReq.setCreateManCode(loginName);
	opLogReq.setCreateManName(cnName);
	opLogReq.setTargetNum(resultList.get(i).getfTargetNum());
	opLogTempList.add(opLogReq);

	i++;
	if (i % MAX_COUNT== 0 || i == resultList.size()) {
		//批量插入日志
		searchInfoSyncMapper.insertOpLogBatch(opLogTempList);
		opLogTempList.clear();
	}

}

设置MAX_COUNT 防止sql过长导致报错。

Logo

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

更多推荐