最近项目有个功能,需要批量插入数据,使用的orm框架的是mybatis,在此记录一下
以oracle中scott用户的emp表为例
其中EMPNO为主键,HIREDATE为DATE类型,SAL、COMM、DEPTNO为NUMBER类型
oracle批量插入数据语法:
INSERT INTO table_name
(column1, column2, column3)
(SELECT ?, ?, ?
FROM dual
UNION ALL
SELECT ?, ?, ?
FROM dual
UNION ALL
SELECT ?, ?, ? FROM dual)
添加两条数据到emp表
INSERT INTO EMP(EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,DEPTNO)
(
SELECT '9527' ,'XINGXING','CLERK', 7902 ,TO_DATE('2012-03-14','yyyy-mm-dd'), 1000.00 , 20 FROM DUAL
UNION ALL
SELECT '8888' ,'Jason','CLERK', 7902 ,TO_DATE('2012-03-15','yyyy-mm-dd'), 1500.00 , 20 FROM DUAL
)
mybatis 中的emp.xml配置如下
需求:批量向雇员表插入数据,参数为List,List中存放的是Map,Map中则以Key-Value形式存放数据信息
如:Map {EMPNO="9527",ENAME="XINGXING",JOB="CLERK",MGR="7902",HIREDATE="2012-03-14",SAL="1000.00",DEPTNO="20"}
<insert id="insertData" parameterType="java.util.List" >
INSERT INTO EMP(EMPNO,ENAME,JOB,MGR,HIREDATE,SAL,DEPTNO) (
<foreach collection="list" item="item" index="index" separator="union all">
select
#{item.EMPNO,jdbcType=VARCHAR},
#{item.ENAME,jdbcType=VARCHAR},
#{item.JOB,jdbcType=VARCHAR},
#{item.MGR,jdbcType=NUMERIC},
#{item.MGR,jdbcType=NUMERIC},
TO_DATE(#{item.HIREDATE,jdbcType=VARCHAR},'yyyy-mm-dd')
from dual
</foreach>
)
</insert>
现在就可以批量添加数据了-^-^-
参考:http://www.dewen.org/q/6247
相关推荐
Java实现Mybatis将数据批量插入到Oracle中
Java实现使用Mybatis将数据批量插入到Oracle数据库,并且可以使用Oracle序列来生成主键
本文通过实例代码给大家分享了MyBatis批量插入数据到Oracle数据库中的两种方式,非常不错,具有参考借鉴价值,需要的朋友参考下吧
本文给大家分享MyBatis批量插入(insert)数据操作知识,非常不错,具有参考借鉴价值,感兴趣的朋友一起学习吧
主要介绍了Mybatis批量插入数据返回主键的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。这篇文章主要介绍了mybatis中批量插入的两种方式(高效插入)的相关资料,非常不错,具有参考借鉴价值,感兴趣的朋友一起看看吧
主要介绍了,需要的朋友可以参考下
实现了oracle多条数据的插入,并通过优化,防止内存不足和缩短运行时间,另外通过mybatis的generator工具自动生成dao层,vo层,xml层文件.
怎么利用MyBatis传List类型参数到数据库存储过程中实现批量插入数据?接下来通过本文给大家介绍Mybatis传list参数调用oracle存储过程,需要的朋友可以参考下
Mybatis插入数据返回自增主键 Mybatis插入数据以后只会返回影响的数据库行数,如果是插入一条数据成功则返回1,失败返回零,插入多条返回插入成功的数量。 通过注解或者xml配置无法直接返回自增的主键。Mybatis插入...
最近做项目遇到一个挺纠结的问题,由于业务的关系,DB的数据表无法确定,在使用过程中字段可能会增加,这样在insert时给我造成了很大的困扰。 先来看一下最终我是怎么实现的: <![CDATA[ INSERT INTO tg_fcst...
java快速插入千万级数据,亲测91秒插入1700万数据!!!
6 mybatis批量更新,批量插入时mapper文件的sql 7 搭建一个项目系统 8 创建一个new工作空间,需要修改的字符编码 9 Java @override报错的解决方法 10 js实现 选中子页面的checkbox,点击确认,将选中的数据显示到父...
扩展 Mybatis-Generator,自动生成支持 Oracle、Mysql、Sqlserver 分页查询和批量插入操作的自动代码,支持从 Mapper 接口读取数据源名称;支持 Oracle 使用 SEQUENCE 实现自增主键:需要事先建立好表主键对应的...
ORA-01438: value larger than specified precision allowed for this column... 您可能感兴趣的文章:Oracle+Mybatis的foreach insert批量插入报错的快速解决办法win x64下安装oracle 12c出现INS-30131报错的解决方法Or
批量写入 配置中心 去中心化 通讯机制 同步 RPC RMI 异步 MQ Cron 数据层架构设计 缓存优化 DAO&ORM; 双主架构 主从同步 读写分离 性能优化架构能力 代码级别 关联代码优化 cache对其 分支预测 ...
│ Java面试题75:批量插入几百万条数据.mp4 │ Java面试题76:有没有使用过redis.mp4 │ Java面试题77:redis的使用场景.mp4 │ Java面试题78:redis存储对象的方式.mp4 │ Java面试题79:redis数据淘汰机制.mp4 │...