Mybatis批量插入需要foreach元素。foreach元素有以下主要属性:

(1)item:集合中每一个元素进行迭代时的别名。

(2)index:指定一个名字,用于表示在迭代过程中,每次迭代到的位置。

(3)collection:根据传入的参数值确定。

(4)open:表示该语句以什么开始。

(5)separator:表示在每次进行迭代之间以什么符号作为分隔 符。

(6)close:表示以什么结束。

首先,错误的xml配置文件如下:

<insert id="save" databaseId="oracle">
insert into "sys_user_role"
(
"user_id",
"role_id"
)values
<foreach collection="roleIdList" item="item" index="index" separator="," >
(
#{userId},
#{item}
)
</foreach>
</insert>

如果如上这样写就会报错:SQL 命令未正确结束。

经过修改后正确的xml配置文件如下:

<insert id="save" databaseId="oracle">
insert into "sys_user_role"
(
"user_id",
"role_id"
)
<foreach collection="roleIdList" item="item" index="index" separator="UNION ALL" >
SELECT
#{userId},
#{item}
FROM dual
</foreach>
</insert>

根据上下配置文件,需要注意三个地方:

(1)需要取掉values

(2)separator属性值改为UNION ALL。因为在oracle中用insert into xxx values (xxx,xxx),(xxx,xxx) 这种语法是通不过的

(3)foreach标签中需要取掉括号,加入select ..from dual.

解决Oracle+Mybatis批量插入报错:SQL 命令未正确结束的更多相关文章

  1. JAVA 拼接了一个sql 语句,但是最后运行报错——SQL 命令未正确结束

    错误原因: 拼接的时候因为引号里的部分是直接引起来的,所以将这些语句整个拼接起来的时候就会成为一个“没有断句”的sql语句,如下面我的错误 将整句话拼接起来就相当于   select * from B ...

  2. MyBatis操作Oracle批量插入 ORA-00933: SQL 命令未正确结束

    最近在使用MyBatis操作Oracle数据库的时候,进行批量插入数据,思路是封装一个List集合通过Myabtis 的foreach标签进行循环插入,可是搬照Mysql的批量插入会产生 异常 ### ...

  3. Oracle.EntityFrameworkCore使用时报错:ORA-00933:SQL命令未正确结束

    如果你在使用 Oracle.EntityFrameworkCore 在执行一些分页查询或者其他数据操作时,遇到“ORA-00933:SQL命令未正确结束”, 请先检查你的DbContext中UseOr ...

  4. mybatis批量插入报错

    报错内容 org.springframework.jdbc.UncategorizedSQLException: ### Error updating database. Cause: java.sq ...

  5. ORACLE ORA-00933: SQL 命令未正确结束,

    这个错误害我花了一天时间排查,最后原来是因为结束符,这种语句不能是分号,将分号即可执行成功. MERGE INTO MO_TRADE_COUNT_DAY A USING ( SELECT MAX(fl ...

  6. ORA-00933 SQL命令未正确结束 INSERT INTO ... SELECT

    最近在修改数据库存储过程时,出现了一个ORA-00933错误, 执行的是 INSERT INTO...SELECT 语句,具体语句如下: INSERT INTO BASP_DX.QLR@GT(BDCD ...

  7. oracle+mybatis批量插入踩坑记

    最近在项目中需要使用oracle+mybatis批量插入数据,因为自增主键,遇到问题,现记录如下: 一.常用的两种sql写法报错 1.insert ... values ... <insert ...

  8. druid + mysql + mybatis 批量更新报错

    首先 批量更新报错 sql injection violation, multi-statement not allow 然后看了博客:https://blog.csdn.net/qq_3634595 ...

  9. linux报错:命令未找到

    前段时间看到一个比较好玩的项目:[musicbox](https://github.com/darknessomi/musicbox) 开始用git clone安装,输入命令无法运行.开始以为安装有问 ...

随机推荐

  1. django的model操作整理

    单表操作 增加数据 auther_obj = {"auther_name":"崔皓然","auther_age":1} models.aut ...

  2. day 16 包,random,shutil

    包: 函数过多,可以分模块文件去管理函数,模块文件过多,将模块文件分类放在一个个的文件夹中,这个文件夹就叫做包,组织结构更加清晰,合理! 模式就是被别人使用,包既然是一些模块的集合,也是被调用. 文件 ...

  3. linux命令学习之:sed

    sed:Stream Editor文本流编辑,sed是一个“非交互式的”面向字符流的编辑器.能同时处理多个文件多行的内容,可以不对原文件改动,把整个文件输入到屏幕,可以把只匹配到模式的内容输入到屏幕上 ...

  4. MultiImageSelector 仿微信选择多张图片回调

    项目可以去github下载 : https://github.com/lovetuzitong/MultiImageSelector 第0步 把模块 multi-image-selector 作为你的 ...

  5. html5新添加的表单类型和属性

    email类型: <input type="email"> url类型: <input type="url"> date类型: < ...

  6. mysql 添加外键

    create table class( cid tinyint unsigned primary key auto_increment, caption varchar(15) not null)en ...

  7. javascript DOM基础操作

    DOM(Document Object Model)即文档对象模型,针对HTML和XML文档的API(应用程序接口).DOM描绘了一个层次化的节点树,运行开发人员添加.移除和修改页面的某一部分.DOM ...

  8. ofo退押金脚本

    同事钉钉给的 因为押金一直没退,电话很难打进去,咨询客服排队要等好久,一直几千位. 长时间挂机就自动退出客服了,所以自动写了一个脚本,目前已经成功退押金了.所以共享出来 1.关注ofo小黄车订阅号,注 ...

  9. HTML&&css练习

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  10. poj 2785 让和为0 暴力&二分

    题目链接:http://poj.org/problem?id=2785 大意是输入一个n行四列的矩阵,每一列取一个数,就是四个数,求有多少种着四个数相加和为0的情况 首先脑海里想到的第一思维必然是一个 ...