最近项目有个功能,需要批量插入数据,使用的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数据库中。 首先,我们需要理解Oracle数据库的一些基本概念。Oracle是世界上最流行的商业关系型数据库管理系统之一,以其强大的功能和高可靠性而...
MyBatis批量插入数据到Oracle数据库中的两种方式 MyBatis是一款流行的持久层框架,提供了批量插入数据到数据库的功能。本文将通过实例代码,分享MyBatis批量插入数据到Oracle数据库中的两种方式。 第一种方式:...
Java实现使用Mybatis将数据批量插入到Oracle数据库,并且可以使用Oracle序列来生成主键
MyBatis foreach批量插入数据:Oracle与MySQL区别介绍 MyBatis foreach批量插入数据是一种高效的数据批量插入方式,通过foreach标签可以实现批量插入数据。但是,在不同的数据库管理系统中,foreach标签的使用有...
在上面的示例中,使用了foreach元素来批量插入数据。foreach元素可以根据不同的条件生成不同的SQL语句。 动态SQL的优点 ------------- MyBatis的动态SQL特性有很多优点,例如: * 提高代码的灵活性和可维护性 * ...
Mybatis批量插入数据返回主键的实现 Mybatis是当前最流行的持久层框架之一,它提供了强大的批量插入功能,但是在批量插入数据时如何返回主键是一个常见的问题本文将详细介绍Mybatis批量插入数据返回主键的实现。 ...
在MyBatis中,批量插入数据是一种提高性能的有效方式,特别是在处理大量数据时。本文将详细介绍如何在MyBatis中实现批量插入,并通过一个具体的示例来说明。批量插入操作通常涉及以下关键步骤: 1. **实体类定义**...
Mybatis批量foreach merge into的用法是通过Mybatis的动态SQL语法foreach循环插入实现的,这种方法可以批量插入时间价格表数据。如果某个套餐的某天的价格存在,则更新,不存在则插入。下面是该方法的详细介绍: ...
"Mybatis调用Oracle存储过程传List...使用Mybatis传List参数调用Oracle存储过程,可以实现批量插入数据,解决了Mybatis批量插入数据的限制问题。同时,这种方法也可以灵活地控制事务回滚,提高了系统的可靠性和性能。
本文将详细探讨如何在Oracle数据库中进行批量插入优化,并介绍MyBatis Generator这一自动化代码生成工具,以提高开发效率。 首先,让我们深入理解Oracle数据库中的批量插入。批量插入可以显著提升性能,尤其是在...
在处理大量数据时,批量插入是一种提高性能的有效策略。本文将深入探讨MyBatis中实现批量插入的两种高效方式。 ### 1. MyBatis `foreach` 标签 `foreach` 是MyBatis中用于在SQL语句中迭代集合的标签,特别适合构建...
在实际开发中,批量插入数据是非常常见的需求。使用 Spring 框架结合 MyBatis 框架,可以实现高效的批量插入操作。本文将详细介绍 Spring 中使用 MyBatis 实现批量插入的示例代码,主要分为三种实现方式:foreach、...
在尝试批量插入数据时,常见的做法是创建一个包含待插入对象的List,然后通过MyBatis的`<foreach>`标签将这些对象插入到数据库中。例如,以下是一个错误的示例: ```xml <![CDATA[SELECT SEQ_OCL_SUPCITY....
在数据库操作中,批量插入数据是常见的需求,尤其是在处理大量数据时,批量插入能够显著提高效率。Mybatis,作为一款轻量级的持久层框架,提供了灵活的方式来处理批量添加。本文将详细介绍如何使用Mybatis进行批量...
本文将详细讲解如何使用MyBatis的注解方式在MySQL和Oracle数据库上实现批量处理,旨在提高数据操作的效率。 首先,我们要理解MyBatis的核心原理,它是一个基于Java的持久层框架,通过XML或注解来映射SQL语句,简化...
这样做是因为Oracle不支持像MySQL那样的`VALUES`子句进行批量插入,所以我们需要模拟这个过程,通过`UNION ALL`将多个单行查询组合成一个大的`SELECT`。 在Service层,我们定义了`addBleaseList`方法,它接收一个`...
本篇文章重点讨论如何在Oracle数据库环境下,利用MyBatis进行批量插入、更新和删除操作,这有助于提高数据库操作的效率,减少资源消耗。 批量操作在处理大量数据时尤其重要,因为单条记录的事务提交会消耗更多的...
首先,我们看到一个关键的MyBatis XML映射文件中的`<insert>`标签,用于批量插入数据。这个`<insert>`标签内包含了一个`<![CDATA[...]]>`结构,这是为了防止SQL语句中的特殊字符(如 `>` 和 `)被XML解析器误解析。...