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 ...
随机推荐
- 动态数组第k小,Poj(1442)
题目链接:http://poj.org/problem?id=1442 本来想复制一下,然后直接sort,结果T了. 在网上看了一下,有用两个队列做的,想了半天,没看懂什么意思.后来模拟一边,总算是懂 ...
- Nginx启用Gzip压缩js无效的原因
Nginx启用gzip很简单,只需要设置一下配置文件即可完成,可以参考文章Nginx如何配置Gzip压缩功能.不过,在群里常有人提到,他们的网站Gzip压缩虽然成功了,但检测到JS仍然没有压缩成功,这 ...
- Advanced Memory Allocation 内存分配进阶[转]
May 01, 2003 By Gianluca Insolvibile in Embedded Software Call some useful fuctions of the GNU C l ...
- CDH4.5.0下安装snappy
编译源代码 http://www.cnblogs.com/chengxin1982/p/3862289.html 测试参考 http://blog.jeoygin.org/2012/03/java-c ...
- cudaMalloc和cudaMallocPitch
原文链接 偶有兴趣测试了一下题目中提到的这两个函数,为了满足对齐访问数据,咱们平时可能会用到cudamallocPitch,以为它会带来更高的效率.呵呵,这里给出一段测试程序,大家可以在自己的机器上跑 ...
- python配置日志的几种方式
使用的是logging模块,关于logging模块内容,可以看我的另一篇博客:https://www.cnblogs.com/kuxingseng95/p/9464347.html 作为开发者,我们一 ...
- java XML 通过BeanUtils的population为对象赋值 根据用户选择进行dom4j解析
根据xml文件设计Student对象 <?xml version="1.0" encoding="UTF-8"?> <students> ...
- iOS 蓝牙(GameKit CoreBluetooth)
利用GameKit框架实现ios设备的蓝牙通讯,导入框架:#import <GameKit/GameKit.h> , 注意: 此框架只能用于ios设置间蓝牙通讯 如今苹果开放了接口来实现 ...
- C/C++获取本机名+本机IP+本机MAC
本机名.IP.MAC都是一些比较常用网络参数,怎么用C/C++获取呢? 研究了两三个小时... 需要说明的都在代码注释里 #include <stdio.h> #include <W ...
- Spring Boot Shiro权限管理--自定义 FormAuthenticationFilter验证码整合
思路shiro使用FormAuthenticationFilter进行表单认证,验证校验的功能应该加在FormAuthenticationFilter中,在认证之前进行验证码校验. 需要写FormAu ...