解决Oracle+Mybatis批量插入报错:SQL 命令未正确结束
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 命令未正确结束的更多相关文章
- JAVA 拼接了一个sql 语句,但是最后运行报错——SQL 命令未正确结束
		
错误原因: 拼接的时候因为引号里的部分是直接引起来的,所以将这些语句整个拼接起来的时候就会成为一个“没有断句”的sql语句,如下面我的错误 将整句话拼接起来就相当于 select * from B ...
 - MyBatis操作Oracle批量插入 ORA-00933: SQL 命令未正确结束
		
最近在使用MyBatis操作Oracle数据库的时候,进行批量插入数据,思路是封装一个List集合通过Myabtis 的foreach标签进行循环插入,可是搬照Mysql的批量插入会产生 异常 ### ...
 - Oracle.EntityFrameworkCore使用时报错:ORA-00933:SQL命令未正确结束
		
如果你在使用 Oracle.EntityFrameworkCore 在执行一些分页查询或者其他数据操作时,遇到“ORA-00933:SQL命令未正确结束”, 请先检查你的DbContext中UseOr ...
 - mybatis批量插入报错
		
报错内容 org.springframework.jdbc.UncategorizedSQLException: ### Error updating database. Cause: java.sq ...
 - ORACLE ORA-00933: SQL 命令未正确结束,
		
这个错误害我花了一天时间排查,最后原来是因为结束符,这种语句不能是分号,将分号即可执行成功. MERGE INTO MO_TRADE_COUNT_DAY A USING ( SELECT MAX(fl ...
 - ORA-00933 SQL命令未正确结束 INSERT INTO ... SELECT
		
最近在修改数据库存储过程时,出现了一个ORA-00933错误, 执行的是 INSERT INTO...SELECT 语句,具体语句如下: INSERT INTO BASP_DX.QLR@GT(BDCD ...
 - oracle+mybatis批量插入踩坑记
		
最近在项目中需要使用oracle+mybatis批量插入数据,因为自增主键,遇到问题,现记录如下: 一.常用的两种sql写法报错 1.insert ... values ... <insert ...
 - druid + mysql + mybatis 批量更新报错
		
首先 批量更新报错 sql injection violation, multi-statement not allow 然后看了博客:https://blog.csdn.net/qq_3634595 ...
 - linux报错:命令未找到
		
前段时间看到一个比较好玩的项目:[musicbox](https://github.com/darknessomi/musicbox) 开始用git clone安装,输入命令无法运行.开始以为安装有问 ...
 
随机推荐
- django的model操作整理
			
单表操作 增加数据 auther_obj = {"auther_name":"崔皓然","auther_age":1} models.aut ...
 - day 16 包,random,shutil
			
包: 函数过多,可以分模块文件去管理函数,模块文件过多,将模块文件分类放在一个个的文件夹中,这个文件夹就叫做包,组织结构更加清晰,合理! 模式就是被别人使用,包既然是一些模块的集合,也是被调用. 文件 ...
 - linux命令学习之:sed
			
sed:Stream Editor文本流编辑,sed是一个“非交互式的”面向字符流的编辑器.能同时处理多个文件多行的内容,可以不对原文件改动,把整个文件输入到屏幕,可以把只匹配到模式的内容输入到屏幕上 ...
 - MultiImageSelector 仿微信选择多张图片回调
			
项目可以去github下载 : https://github.com/lovetuzitong/MultiImageSelector 第0步 把模块 multi-image-selector 作为你的 ...
 - html5新添加的表单类型和属性
			
email类型: <input type="email"> url类型: <input type="url"> date类型: < ...
 - mysql 添加外键
			
create table class( cid tinyint unsigned primary key auto_increment, caption varchar(15) not null)en ...
 - javascript  DOM基础操作
			
DOM(Document Object Model)即文档对象模型,针对HTML和XML文档的API(应用程序接口).DOM描绘了一个层次化的节点树,运行开发人员添加.移除和修改页面的某一部分.DOM ...
 - ofo退押金脚本
			
同事钉钉给的 因为押金一直没退,电话很难打进去,咨询客服排队要等好久,一直几千位. 长时间挂机就自动退出客服了,所以自动写了一个脚本,目前已经成功退押金了.所以共享出来 1.关注ofo小黄车订阅号,注 ...
 - HTML&&css练习
			
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
 - poj 2785 让和为0 暴力&二分
			
题目链接:http://poj.org/problem?id=2785 大意是输入一个n行四列的矩阵,每一列取一个数,就是四个数,求有多少种着四个数相加和为0的情况 首先脑海里想到的第一思维必然是一个 ...