Mybatis + Oracle 批量insert的问题
这个问题真的太坑了 之前用ibatis+sql server 的foreach 很容易就写出来批量insert数据,但是测试后报错:SQL结束格式错误
现在换到银行工作,数据库也换成Oracle了 特此记一下
mybatis+oracle的批量insert方法
oracle是通过一张dual虚拟表来帮助insert的,我的参数是Map<String,Object>
TestCase:
@Test
public void saveAlInfoList(){
String batNo = "20170817";
List<AlInfo> list = new ArrayList<>();
AlInfo al = new AlInfo();
al.setAjlx("民事判决书");al.setSjnf("2009");
al.setBt("原告李四与被告张三买卖合同纠纷一案");
al.setDsrlx("被告");
AlInfo al2 = new AlInfo();
al2.setAjlx("民事判决书");al2.setSjnf("2019");
al2.setBt("原告李四与被告张三买卖合同纠纷一案");
al2.setDsrlx("被告");
list.add(al);list.add(al2);
Map<String,Object> map = new HashMap<String,Object>();
map.put("batNo",batNo);
map.put("list",list);
pyMapper.saveAlInfoList(map); }
正确的写法
<insert id="saveSxInfoList" parameterType="java.util.Map">
INSERT INTO TABLE_Al (BATNO,RECORDID,BT,LARQ,FBRQ)
<foreach collection="list" item="item" separator="union all" >
(
SELECT
#{batNo,jdbcType=VARCHAR},
#{item.recordId,jdbcType=VARCHAR},
#{item.bt,jdbcType=VARCHAR},
#{item.larq,jdbcType=VARCHAR},
#{item.fbrq,jdbcType=VARCHAR}
FROM DUAL
)
</foreach>
</insert>
Mybatis + Oracle 批量insert的问题的更多相关文章
- MyBatis中批量insert
在orcale和mybatis执行批量插入是不一样的. orcale如下:(这里要注意的是:useGeneratedKeys="false" ) 方式1:oracle批量插入使用 ...
- MyBatis Oracle批量插入
1.oracle如何insert into 多个values https://www.cnblogs.com/mq0036/p/6370224.html?utm_source=itdadao& ...
- mybatis mysql 批量insert 返回主键
Mybatis在插入单条数据的时候有两种方式返回自增主键: mybatis3.3.1支持批量插入后返回主键ID, 首先对于支持自增主键的数据库:useGenerateKeys和keyProper ...
- mybatis+oracle批量插入报不符合协议和sql未正确结束
在Java中循环save,需要加useGeneratedKeys="false",否则报错不符合协议 mybatis批量插入,也需要在insert里加入 useGeneratedK ...
- mybatis oracle 批量新增
假定场景:批量导入用户信息 一般批量新增使用 SELECT … INSERT INTO 和 INSERT INTO … SELECT 我们这次使用第二种 一.先建一张用户信息表模拟批量导入用户信息 c ...
- mybatis Oracle 批量插入,批量更新
传入的参数只要是list类型的参数就行了..............1.批量插入<insert id="insertBatch" parameterType="ja ...
- mybatis+oracle 批量插入,若数据库中有则做更新操作
1.只批量插入: insert into WXPAY_ACCOUNT(id ,out_trade_no ,transaction_id)select SEQ_WXPAY_ACCOUNT.nextval ...
- mybatis+Oracle 批量插入数据,有数据做更新操作
<!-- 批量添加 --> <insert id="batchAdd" parameterType="java.util.List"& ...
- mybatis oracle -批量插入,存在则更新
<insert id="batchUpdatePBWUserInfo" parameterType="java.util.List"> MERGE ...
随机推荐
- 剑指offer39 平衡二叉树
剑指上用了指针传递,这里用的引用传递 class Solution { public: bool IsBalanced_Solution(TreeNode* pRoot) { ; return IsB ...
- assert函数和捕获异常
assert函数: C语言和C++都有一个专为调试而准备的工具函数,就是 assert()函数. 这个函数是在C语言的 assert.h 库文件里定义的,所以包含到C++程序里我们用以下语句: #in ...
- redis redis的连接
昨天2017年12月26日,我刚刚从网上下载了redis.经过一天的摸索,踩了不少坑.昨天下午,比较磕磕巴巴,今天早上 终于比较完善地完成了一次小操作. 使用cmd的重要步骤 1.输入redis-se ...
- c#按钮如何避免重复点击后报错
前言:感谢51·halcon的绝地武士大佬啊,虽然你不认识我,但是我从你那学到了很多知识,真的感谢您对知识的无私传播哈哈(两天一个博客有在坚持的,都是草稿,等这个实习阶段过去了再回来整理博客~) bt ...
- svn更改地址怎么办
开发过程中有时会遇到服务器更换地址的情况,比如之前地址是 svn://www.aaa.com 后来换成了 svn://www.bbb.com 这时候怎么办呢?分客户端和服务器端2种情况处理 客户端: ...
- 简单使用mybatis(idea中使用)
首先创建一个maven项目 第一步:在pom.xml中添加依赖 <dependencies> <!--mybatis--> <dependency> <gro ...
- getnumdevices.c && setgetdevicetype例程
getnumdevices.c代码 /* 文件名: getnumdevices.c * 功能 : 测试函数acc_get_num_devices(.) */ #include<stdio.h&g ...
- 第48章 MDK的编译过程及文件类型全解—零死角玩转STM32-F429系列
第48章 MDK的编译过程及文件类型全解 全套200集视频教程和1000页PDF教程请到秉火论坛下载:www.firebbs.cn 野火视频教程优酷观看网址:http://i.youku.co ...
- 带有data-ng-bind表达式
<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content=&q ...
- 子div作为遮罩层
效果图: 子div的代码: