ibatis 批量插入
ibatis 批量插入
CreationTime--2018年7月2日10点21分
Author:Marydon
1.说明
基于oracle的sql语句
2.主键id有默认值,比如:sys_guid()
id有默认值的情况下,插入的时候,不再声明该字段,当插入一条数据的时候,oracle会自动生成id。
<insert id="insertCONSULT_SCHEDULE_batch" parameterClass="java.util.List">
INSERT ALL
<iterate conjunction=" ">
INTO CONSULT_SCHEDULE
(ORG_CODE,DEPENT_ID,DEPENT_NAME,DOCTOR_ID,DOCTOR_NAME,DOCTOR_PHONE,SCHEDULE_DATE,WEEK_TXT,WB_TYPE,CLOSE_TZ,REPLACE_TZ,REMARK)
VALUES
<![CDATA[
(#list[].ORG_CODE:VARCHAR#,
#list[].DEPENT_ID:VARCHAR#,
#list[].DEPENT_NAME:VARCHAR#,
#list[].DOCTOR_ID:VARCHAR#,
#list[].DOCTOR_NAME:VARCHAR#,
#list[].DOCTOR_PHONE:VARCHAR#,
TO_DATE(#list[].SCHEDULE_DATE#,'yyyy-MM-dd'),
#list[].WEEK_TXT:VARCHAR#,
#list[].WB_TYPE:VARCHAR#,
#list[].CLOSE_TZ:VARCHAR#,
#list[].REPLACE_TZ:VARCHAR#,
#list[].REMARK:VARCHAR#)
]]>
</iterate>
SELECT 1 FROM DUAL
</insert>
字符串需要声明jdbc类型为VARCHAR,可以做数据类型转换;
当表字段设有默认值时,可以不插入该字段,数据库在插入该条记录时,会自动为设有默认值的字段插入默认值。
3.主键id使用序列
id使用序列,需要先查出来序列的值作为id,手动插入到数据库。
<!-- 图像表 批量插入sql -->
<insert id="insertIMAGE_INFOBatch" parameterClass="java.util.List">
INSERT INTO IMAGE_INFO
(ID,FORM_LIST_ID,IMAGE_NAME)
SELECT SEQ_IMAGE_INFO.NEXTVAL,FORM_LIST_ID,IMAGE_NAME FROM
(
<iterate conjunction="UNION ALL" prepend="">
<![CDATA[
SELECT #list[].FORM_LIST_ID:DECIMAL# AS FORM_LIST_ID,
#list[].IMAGE_NAME:VARCHAR# AS IMAGE_NAME FROM DUAL
]]>
</iterate>
)
</insert>
由于oracle的序列的数据类型是number,因此其对应的jdbc类型为DECIMAL。
4. 注意
iBATIS使用这种批量插入操作,局限性在于:
每次插入的总数据不能超过1000(插入字段数*插入行数<=1000),使用大集合拆分成小集合的方式来限制每次插入数量不超过1000即可。
2020/04/21
效果展示
实际执行的sql

插入结果:id字段是序列,上面已经对序列进行了查询;createtime字段默认值为系统时间

相关推荐:
ibatis 批量插入的更多相关文章
- IBatis批量插入数据
IBatis插入注意,数据量比较多的花,需要分批插入,策略是dao里面控制插入批次,mapper里面批量插入即可 @Override public Long insertBatch(List<W ...
- Java使用iBatis批量插入数据到Oracle数据库
Java使用iBatis批量插入数据到Oracle数据库 因为我们的数据跨库(mysql,oracle),单独取数据的话需要遍历好多遍,所以就想着先从mysql数据库中取出来的数据然后在oracle数 ...
- mysql+ibatis 批量插入
述:相比oracle批量插入,mysql批量插入就简单的多了,mysql支持values后面跟多条数据,进行批量插入,并且主键可以自增,不像oracle会遇到序列问题. 1.建表 CREATE TAB ...
- oracle+ibatis 批量插入-支持序列自增
首先请先看我前面一篇帖子了解oracle批量插入的sql:[oracle 批量插入-支持序列自增] 我用的ibatis2.0,sqlMap文件引入的标签如下: <!DOCTYPE sqlMap ...
- ibatis 批量插入oracle总结
1. 使用批量插入最先想到如下的插入语句 insert into a (id,name) values('','') ,('','') 但是 oracle 并不支持这种写法 然后查询得知可以使用如下写 ...
- IBatis 批量插入数据
sql语句 <!--批量插入待收流水--> <insert id="BatchInsertOrder" parameterClass="ArrayLis ...
- IBatis 批量插入数据之SqlBulkCopy
public void AddLetters(IList<int> customerIds, string title, string content, LetterEnum.Letter ...
- oracle 批量插入-支持序列自增
1.创建表.序列 -- Create table create table test_batch ( id number not null, name ), account ) ) -- Create ...
- IBatis.Net 批量插入数据
利用了iterate标签来做的: 先看iterate标签几个属性的: prepend-加在open指定的符号之前的符号,添加在语句的前面(可选) property-类型为ArrayList的用于遍历的 ...
随机推荐
- bzoj 1433: [ZJOI2009]假期的宿舍 -- 最大流
1433: [ZJOI2009]假期的宿舍 Time Limit: 10 Sec Memory Limit: 162 MB Description Input Output Sample Input ...
- bzoj 1625: [Usaco2007 Dec]宝石手镯
Description 贝茜在珠宝店闲逛时,买到了一个中意的手镯.很自然地,她想从她收集的 N(1 <= N <= 3,402)块宝石中选出最好的那些镶在手镯上.对于第i块宝石,它的重量为 ...
- POJ 2482 Stars in Your Window 线段树
如果按一般的思路来想,去求窗户能框住的星星,就很难想出来. 如果换一个思路,找出每颗星星能被哪些窗户框住,这题就变得非常简单了. 不妨以每个窗户的中心代表每个窗户,那么每颗星星所对应的窗户的范围即以其 ...
- poj2117 Electricity
试题描述 求一个图删除一个点之后,联通块最多有多少. 输入 多组数据.第一行两个整数 P,C 表示点数和边数.接下来 C 行每行两个整数 p1,p2,表示 p1 与 p2 有边连接,保证无重边.读 ...
- April Fools Day Contest 2016 C. Without Text 信号与系统
C. Without Text 题目连接: http://www.codeforces.com/contest/656/problem/C Description You can preview th ...
- 2015 百度之星 1004 KPI STL的妙用
KPI Time Limit: 20 Sec Memory Limit: 256 MB 题目连接 http://acdream.info/problem?pid=1754 Description 你 ...
- windows2008服务器连接Oracle慢的问题。
昨天发布程序到2008服务器的IIS,从Sql Server数据库取数没问题,但是从Oracle数据库取数,非常的慢,同样的程序在2003服务器上没问题,本机也没问题.一开始怀疑是这台机器有问题,后来 ...
- JAVA多线程读写文件范例
在写之前先声明,本文是基于之前在博客园网站上检索到的一份JAVA多线程读写文件的示例,我在写自己的程序时是在那位作者写的基础上做了改良,但已不记得原文的地址.如果有知情者,烦请帖出地址,我在此文上加入 ...
- head first---------facade design pattern
head first----------外观模式或者门面模式 外观模式又名门面模式:提供了一个统一的接口,用来访问子系统中的一群接口.外观模式定义了一个高层接口,从而让子系统更容易使用 ...
- 解决用户自生成meta导入kylin后报错问题Can not deserialize instance of java.lang.String[] out of VALUE_STRING token
报错栈: -- ::, ERROR [http-bio--exec-] cube.CubeManager: : Error during load cube instance, skipping : ...