- 浏览: 156205 次
- 性别:
- 来自: 魔都
最新评论
-
renzhengzhi:
mybatis的这个批量insert为什么不是在一个事务里?
使用Mybatis做批量插入 -
forlab:
花架构威武吧唧,一统江湖
Eclipse插件之Findbugs -
恋上你的味道:
花家狗V587 神功盖屎 一桶浆糊
Netty+Tomcat热部署端口占用解决办法 -
hekuilove:
宁帅陈 写道你好,我想通过java程序获取@当前登录用户的人员 ...
新浪微博API开发流程 -
宁帅陈:
你好,我想通过java程序获取@当前登录用户的人员以及信息,怎 ...
新浪微博API开发流程
最近有个需求,将excel的数据导入的数据库的这个一个操作。
工作主要分为:解析excel,将excel中的数据单条循环插入数据库。
使用框架:mybatis+spring
使用过Mybatis的人都知道,自动生成的Mapper里是不支持批量插入的,也不支持SQL。这个让我有点小小的郁闷,网上查资料发现对这方面的资料颇少。于是决定写一篇blog案例分享心得。
或许有人要问既然Mybatis既然支持插入了,为何非要要使用批量插入。我这里的excel中的数据最少也是上W条,如果是使用单条循环插入的话会对数据库造成很大的负荷状态,数据库的连接资源是有限的,循环插入的时候会直接的影响其它的数据库操作。
pojo
interface
再看看XML里的操作
如此简单的操作,我也不做多说吧。相信都能看懂#{item.uuid,jdbcType=CHAR}其中uuid是对象的字段,CHAR是对应的数据库字段类型
聋家狗 FU*CK YOU
我当时的业务是导入csv到数据库里,当时一个excel多则上百万条,少则几万条
,由于太多,我就1000条一次执行一次批量,插完为止。。
当时用的数据库是MySQL,我最近用oracle也有一个类似的情况想这样干结果不行了,oracle不支持这种语法
select标签里面是可以包含insert语句
我是把大量的数据拆开来N个1000条来执行的,执行N次
当然确定,select一样一样的。。insert也行。。没实现类
我的是MySQL
工作主要分为:解析excel,将excel中的数据单条循环插入数据库。
使用框架:mybatis+spring
使用过Mybatis的人都知道,自动生成的Mapper里是不支持批量插入的,也不支持SQL。这个让我有点小小的郁闷,网上查资料发现对这方面的资料颇少。于是决定写一篇blog案例分享心得。
或许有人要问既然Mybatis既然支持插入了,为何非要要使用批量插入。我这里的excel中的数据最少也是上W条,如果是使用单条循环插入的话会对数据库造成很大的负荷状态,数据库的连接资源是有限的,循环插入的时候会直接的影响其它的数据库操作。
pojo
package me.gall.business.model.mybatis.bean; /** * @author Quinn He * @dateTime 2012-2-9 下午4:35:18 * */ public class ApkStatisticRaw { private Integer id; private String uuid; private String apkId; private String eventId; private Integer supplyId; private Integer channelId; private String fileUploadRecordId; private String productName; private String content; private Long time; private Integer numbers; private Integer status; private String creator; private Long createTime; private String other; set... get... }
interface
import me.gall.business.model.mybatis.bean.ApkStatisticRaw; /** * @author Quinn He * @dateTime 2012-2-20 下午7:48:39 */ public interface ApkStatisticRawExtMapper { /** * 专门针对在导入CSV文件时 * 频繁操作数据库造成的数据库并发问题 * 固此方法为批量插入方法 * * @author Quinn He * @dateTime 2012-3-30 上午11:34:22 * @param list */ void batchInsert(List<ApkStatisticRaw> list); }
再看看XML里的操作
<select id="batchInsert" parameterType="java.util.List"> insert into apk_statistic_raw (uuid,apk_id,event_id,supply_id,channel_id,file_upload_record_id,product_name,content,time,numbers,status,creator,create_time,other )values <foreach collection="list" item="item" index="index" separator=","> (#{item.uuid,jdbcType=CHAR},#{item.apkId,jdbcType=CHAR},#{item.eventId,jdbcType=CHAR},#{item.supplyId,jdbcType=INTEGER},#{item.channelId,jdbcType=INTEGER} ,#{item.fileUploadRecordId,jdbcType=CHAR},#{item.productName,jdbcType=VARCHAR},#{item.content,jdbcType=VARCHAR},#{item.time,jdbcType=BIGINT}, #{item.numbers,jdbcType=INTEGER},#{item.status,jdbcType=INTEGER},#{item.creator,jdbcType=VARCHAR},#{item.createTime,jdbcType=BIGINT},#{item.other,jdbcType=VARCHAR} ) </foreach> </select>
如此简单的操作,我也不做多说吧。相信都能看懂#{item.uuid,jdbcType=CHAR}其中uuid是对象的字段,CHAR是对应的数据库字段类型
评论
15 楼
renzhengzhi
2015-08-24
mybatis的这个批量insert为什么不是在一个事务里?
14 楼
hekuilove
2014-03-20
恋上你的味道 写道
花家狗V587 一统江湖
聋家狗 FU*CK YOU
13 楼
恋上你的味道
2014-03-20
花家狗V587 一统江湖
12 楼
hekuilove
2014-01-21
qianmo666 写道
最大插入量是多少?
我当时的业务是导入csv到数据库里,当时一个excel多则上百万条,少则几万条
,由于太多,我就1000条一次执行一次批量,插完为止。。
当时用的数据库是MySQL,我最近用oracle也有一个类似的情况想这样干结果不行了,oracle不支持这种语法
11 楼
qianmo666
2014-01-06
最大插入量是多少?
10 楼
RyanLu
2013-01-09
请问如果我的ID是自增长的,我批量插入的时候,每个domain object的id,能返回吗?尝试过在里面加<select key>好像不起作用。我用是sql server 2005
<insert id="batchInsert" parameterType="java.util.List"> <selectKey keyProperty="id" order="AFTER" resultType="java.lang.Integer"> SELECT SCOPE_IDENTITY() AS id </selectKey> <foreach collection="list" item="item" index="index" separator=" "> insert into itd.Approval (ApplicationId, ApproverId, ApproverProjectId, Priority, Status, ApprovedTime, Comments) select #{item.applicationId,jdbcType=INTEGER}, #{item.approverId,jdbcType=INTEGER}, #{item.approverProjectId,jdbcType=INTEGER}, #{item.priority,jdbcType=INTEGER}, #{item.status,jdbcType=CHAR}, #{item.approvedTime,jdbcType=TIMESTAMP}, #{item.comments,jdbcType=NVARCHAR} </foreach> </insert>
9 楼
zq93741833
2012-11-23
小五哥丶 写道
妹的,全是SELECT,
select标签里面是可以包含insert语句
8 楼
hekuilove
2012-11-06
hanzhicheng754 写道
哥们,你插入的最大量是多少?
我是把大量的数据拆开来N个1000条来执行的,执行N次
7 楼
hanzhicheng754
2012-11-05
哥们,你插入的最大量是多少?
6 楼
hekuilove
2012-10-24
natian306 写道
select? 确定不是insert? 楼主是否直接用的mapper操作? 是否有dao的实现类?
当然确定,select一样一样的。。insert也行。。没实现类
5 楼
natian306
2012-10-21
select? 确定不是insert? 楼主是否直接用的mapper操作? 是否有dao的实现类?
4 楼
hekuilove
2012-10-11
kingliu 写道
哥们儿,你用的什么数据库,我用sybase发现不行啊
我的是MySQL
3 楼
kingliu
2012-10-11
哥们儿,你用的什么数据库,我用sybase发现不行啊
2 楼
j315321
2012-05-22
能不能把批量操作的java方法贴出来看看,谢……
1 楼
小五哥丶
2012-04-20
妹的,全是SELECT,
发表评论
-
JVM相关笔记
2019-01-30 21:19 4601、检查死锁 jps -v [查看所有Java进 ... -
Git常用命令记录
2019-01-08 11:20 493强制更新 git log git reset --hard ... -
Netty+Tomcat热部署端口占用解决办法
2015-06-13 17:32 8169在eclipse使用maven deploy (tomcat: ... -
MAVEN+TOMCAT7、8的Deploy配置
2015-06-13 13:46 41、配置好conf/tomcat-users.xml,加入如下 ... -
javascript之HashMap
2015-04-16 11:23 1164用法 var map = new HashMap(); ... -
发现面向对象的美之抽象
2014-09-19 11:56 0很多开发者在面试的时候恐怕都问过或者被问过,面向对象的几大特性 ... -
ActiveMQ初级教程
2014-05-20 18:07 2650MQ的思想其实和连接池差不多,只不过一个是队列,一个是多线程。 ... -
Mybatis批量插入Oracle、MySQL
2014-05-19 16:09 5163要做批量插入数据库, ... -
ActiveMQ发送接收TextMessage、BytesMessage
2014-02-24 16:51 75111、TextMessage 发送部分 package o ... -
UDP通讯协议
2014-02-20 21:01 1179在做手机和服务端通讯时,UDP是其中可用协议之一。不过UDP的 ... -
JBOSS7配置JDNI
2014-02-13 21:52 12511、配置jar包 在jboss7的安装目录modules下建立 ... -
自定义DWR拦截器
2013-06-04 19:07 4488使用DWR和其它mvc框架混用时(如struts和spring ... -
Eclipse+TOMCAT工程如何deploy在webapps文件夹
2013-02-05 20:10 4750Eclipse集成Tomcat发布工程的时候,有时候项目发布不 ... -
根据时间的复杂统计
2012-12-07 18:24 1259客户的需求往往是各种各样的,本人在开发系统的时候遇到一个比较复 ... -
MySQL UTF-8中文排序
2012-06-15 16:08 2841假如在MySQL的表中有一列字段是中文,需要根据该字段从a-z ... -
关于:the last packet sent successfully to the server was 0 milliseconds ago
2012-04-20 10:11 2664最近老是出现个问题,早上以来公司登录公司的后台业务系统(由我是 ... -
jquery ajax parseerror问题
2012-03-03 12:32 3841以前都是用ajax做一些简单的东东,很少用ajax做查询。今日 ... -
过滤器chain.doFilter(req, resp);抛异常java.lang.IllegalArgumentException
2012-02-08 21:35 2598今天在开发中遇到一个错误 org.springframew ... -
关于maven工程内存溢出解决办法
2012-01-04 14:17 2133在看maven in action的时候意外发现我们项目中经常 ...
相关推荐
Java实现使用Mybatis将数据批量插入到Oracle数据库,并且可以使用Oracle序列来生成主键
主要介绍了spring中使用mybatis实现批量插入的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
Mybatis与JDBC批量插入MySQL数据库性能测试,资源包含文档、代码和数据库。
Mybatis Plus 自定义批量插入或批量更新(根据唯一索引)
MyBatis是一个支持普通SQL查询,存储过程和高级映射的优秀持久层框架。这篇文章主要介绍了mybatis中批量插入的两种方式(高效插入)的相关资料,非常不错,具有参考借鉴价值,感兴趣的朋友一起看看吧
使用方法请看博客 https://blog.csdn.net/bandaotixiruiqiang/article/details/72478361#comments_12931827
只提供代码,自己去下载相关jar包谢谢只提供代码,自己去下载相关jar包谢谢只提供代码,自己去下载相关jar包谢谢只提供代码,自己去下载相关jar包谢谢只提供代码,自己去下载相关jar包谢谢
mybatispuls3.5使用批量插入
Java实现Mybatis将数据批量插入到Oracle中
mybatis 批量插入 嵌套select
通过foreach实现ibatis的批量插入
MyBatis批量插入,效率经测试,1000条数据,批量插入和单条插入,执行效率至少快一倍,送上源码,供参考学习
文档中主要说明:(1)多表联合查询步骤,快捷便利;(2)数据批量插入,以及相关的案例,节省运行资源。
MyBatis动态SQL,MyBatis批量插入(Oracle数据库)[收集].pdf
主要介绍了Mybatis数据批量插入如何实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
mybaits 多线程 实现数据批量插入 (运用CountDownLatch实现闭锁) 1、mybatis批处理 2、数据分批量查询 3、数据分批量插入
本篇文章主要介绍了详解MyBatis批量插入数据Mapper文件的写法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
本文给大家分享MyBatis批量插入(insert)数据操作知识,非常不错,具有参考借鉴价值,感兴趣的朋友一起学习吧
跨库批量插入
mybatis批量添加的时候报错总结报错 parameter'_frch_item_0 not found