mybatis oracle 动态sql批量插入
mapper.xml 语法<insert id="insertxxx" parameterType="java.util.List"useGeneratedKeys="false" >INSERT ALL<foreach collection="list" item="log" >into table...
·
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过长导致报错。
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐

所有评论(0)