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> 

这样,批量插入的时候老是出问题,一个个都插入的时候,没有问题,是为什么??

阅读 7.6k
2 个回答

你这使用的是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>
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题