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 批量插入的更多相关文章

  1. IBatis批量插入数据

    IBatis插入注意,数据量比较多的花,需要分批插入,策略是dao里面控制插入批次,mapper里面批量插入即可 @Override public Long insertBatch(List<W ...

  2. Java使用iBatis批量插入数据到Oracle数据库

    Java使用iBatis批量插入数据到Oracle数据库 因为我们的数据跨库(mysql,oracle),单独取数据的话需要遍历好多遍,所以就想着先从mysql数据库中取出来的数据然后在oracle数 ...

  3. mysql+ibatis 批量插入

    述:相比oracle批量插入,mysql批量插入就简单的多了,mysql支持values后面跟多条数据,进行批量插入,并且主键可以自增,不像oracle会遇到序列问题. 1.建表 CREATE TAB ...

  4. oracle+ibatis 批量插入-支持序列自增

    首先请先看我前面一篇帖子了解oracle批量插入的sql:[oracle 批量插入-支持序列自增] 我用的ibatis2.0,sqlMap文件引入的标签如下: <!DOCTYPE sqlMap ...

  5. ibatis 批量插入oracle总结

    1. 使用批量插入最先想到如下的插入语句 insert into a (id,name) values('','') ,('','') 但是 oracle 并不支持这种写法 然后查询得知可以使用如下写 ...

  6. IBatis 批量插入数据

    sql语句 <!--批量插入待收流水--> <insert id="BatchInsertOrder" parameterClass="ArrayLis ...

  7. IBatis 批量插入数据之SqlBulkCopy

    public void AddLetters(IList<int> customerIds, string title, string content, LetterEnum.Letter ...

  8. oracle 批量插入-支持序列自增

    1.创建表.序列 -- Create table create table test_batch ( id number not null, name ), account ) ) -- Create ...

  9. IBatis.Net 批量插入数据

    利用了iterate标签来做的: 先看iterate标签几个属性的: prepend-加在open指定的符号之前的符号,添加在语句的前面(可选) property-类型为ArrayList的用于遍历的 ...

随机推荐

  1. django之cookie、session和ajax

    1 Cookie cookie是什么? 保存在客户端浏览器上的键值对   {k:v} cookie依附在请求头或响应头中出现 发送请求时,会自动携带自己网站的cookie 应用: 实现登录 投票 1. ...

  2. ACM -- 算法小结(五)字符串算法之Sunday算法

    1. Sunday算法是Daniel M.Sunday于1990年提出的一种比BM算法搜索速度更快的算法. 2. Sunday算法其实思想跟BM算法很相似,只不过Sunday算法是从前往后匹配, 在匹 ...

  3. python gensim的第一次试用

    参考于 http://blog.csdn.net/xiaoquantouer/article/details/53583980 有一个地方很重要,一定要安装anaconda,安装库简直不要太方便. 先 ...

  4. Make a printer-port EEPROM programmer and dongle

    You can easily use a PC's printer port for serial-EEPROM programming. You can use a device-programme ...

  5. Linux命令-添加新硬盘,分区及挂载[转]

    http://www.cnblogs.com/qiyebao/p/4484370.html 转自:http://blog.chinaunix.net/uid-25829053-id-3067619.h ...

  6. Java Http 设置代理

    1.今天在Eclipse下面编译一个Http客户端时,发现可以连接局域网,连接不上外部网络,突然想起所用PC是通过代理访问网络的,设置代理后程序可以正常访问网络了: Properties props ...

  7. 企业应用:浅谈 “数据权限” 和 查询 API 设计

    背景 多数企业应用都需要对数据权限进行控制,如:某个用户只能看到某个范围的数据(数据行).某个用户只能看到某几列数据(数据列).本文以数据行级别的权限控制为范例,谈谈如何设计权限模型和查询 API. ...

  8. python笔记21-列表生成式

    前言 python里面[]表示一个列表,快速生成一个列表可以用range()函数来生成. 对列表里面的数据进行运算和操作,生成新的列表最高效快速的办法,那就是列表生成式了. range() 1.一个连 ...

  9. redis主键失效机制

    Memcached删除主键的方式与Redis有何异同 首先,Memcached 在删除失效主键时也是采用的消极方法,即 Memcached 内部也不会监视主键是否失效,而是在通过 Get 访问主键时才 ...

  10. 能力成熟度模型CMM

    能力成熟度模型(Capability Maturity Model,英文缩写为CMM)[1]是 一种开发模型.Carnegie Mellon大学的研究人员从美国国防部合同承包方那里收集数据并加以研究, ...