java - mybatis的foreach批量插入的问题
本文介绍了java - mybatis的foreach批量插入的问题的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
问 题
如下:
INSERT INTO my_occur_hist (
id,
flow_id,
aid,
processor,
node,
STATUS,
result,
last_flow_id,
last_processor,
last_result,
created_time,
updated_time
)
VALUES
<foreach item="item" collection="list" open="(" separator="," close=")">
NULL,
#{item.flowId},
#{item.aid},
#{item.processor},
#{item.node},
#{item.status},
#{item.result},
#{item.lastFlowId},
#{item.lastProcessor},
#{item.lastResult},
NOW(),
NOW()
</foreach>
这样,批量插入的时候老是出问题,一个个都插入的时候,没有问题,是为什么??
解决方案
你这使用的是mysql数据库的方言,标准语句如下:
insert into table(col1,col2) values(val1_1,val1_2),(val2_1,val2_2)
其实你把控制台mybatis打印的sql语句复制出来就立马能发现问题,你这个打印的sql应该是这样的:
insert into table(col1,col2) values(val1_1,val1_2,val2_1,val2_2)
正确的写法应该是这样的,插入的每一条数据都要有括号:
insert into .....
<foreach item="item" collection="list" separator=",">
( null,
#{item.flowId},
now()
)
</foreach>
这篇关于java - mybatis的foreach批量插入的问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文