- 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过长导致报错。