java - mybatis的foreach批量插入的问题

查看:217
本文介绍了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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆