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. java函数方法

    1.方法重载 (1)源代码 // MethodOverload.java // Using overloaded methods public class MethodOverload { publi ...

  2. supervisor安装和简单使用

    安装 pip install superviosr echo_supervisord_conf > /etc/supervisord.conf 编辑配置文件: [unix_http_server ...

  3. JQuery|jstl判断是否为空

    //有如下三种判断 var A=$("#**).val(); if(A==null||A==undefined||A==""){ //处理 } //参考文章1说下面方法效 ...

  4. unbutu中安装jdk并编写第一个java程序

    第一部分:安装jdk 1.首先在putty控制台中输入如下命令,检验系统中是否已经装有jdk. java -version 如果显式的结果如下图,则说明没有安装. openjdk是在linux下默认安 ...

  5. 高盛oa

    一道题根本不会,抄答案过了.一道自己写,莫名其妙出现了不会的bug.最后交了暴力解,过了5/7.估计要跪. 总结: 缺点:做过的不熟练.没做过的题不会.一个陌生的小bug也de不出来. 措施:多总结还 ...

  6. eval详解

    eval()的作用 把字符串参数解析成js代码并运行,并返回执行的结果: eval的作用域 作用域在它所有的范围内容有效 IE8及以下指向window 解决方法: functiona(){ if(wi ...

  7. error:cv_bridge---opencv和ros连接起来的桥

    有多个warning出现...版本冲突 解决办法: cv_bridge[opencv和ros连接起来的桥],默认依赖的opencv版本是2.4.8,如果安装了新的opencv版本,比如3.1.0,那么 ...

  8. ubuntu 安装Pangolin 过程

    Pangolin 是一款开源的OPENGL显示库,可以用来视频显示.而且开发容易. 代码我们可以从Github 进行下载:https://github.com/zzx2GH/Pangolin.git ...

  9. initialize flexnet service failed error code 50003

    网络上下载回来的绿色版Xshell/Xftp在每次启动时都会报这个错,通过FlexNet Licensing Service 安装与卸载脚本了解到,程序 启动的时候会检查FlexNet Licensi ...

  10. Django 前端Wbe框架

    Web框架本质及第一个Django实例   Web框架本质 我们可以这样理解:所有的Web应用本质上就是一个socket服务端,而用户的浏览器就是一个socket客户端. 这样我们就可以自己实现Web ...