mybatis mysql批量插入多个对象_使用Mybatis做批量插入

这篇博客介绍了如何使用Mybatis进行批量插入多个ApkStatisticRaw对象到MySQL数据库,包括Java接口和XML配置的详细代码示例。博主强调了这种方法可以解决频繁数据库操作带来的并发问题,并分享了一个批处理的例子,但讨论区中有人提出疑问是否在同一个事务中执行。
摘要由CSDN通过智能技术生成

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 list);

}

再看看XML里的操作

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

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}

)

如此简单的操作,我也不做多说吧。相信都能看懂#{item.uuid,jdbcType=CHAR}其中uuid是对象的字段,CHAR是对应的数据库字段类型

分享到:

18e900b8666ce6f233d25ec02f95ee59.png

72dd548719f0ace4d5f9bca64e1d7715.png

2012-03-30 19:50

浏览 27190

论坛回复 / 浏览 (5 / 14367)

评论

15 楼

renzhengzhi

2015-08-24

mybatis的这个批量insert为什么不是在一个事务里?

14 楼

hekuilove

2014-03-20

恋上你的味道 写道

花家狗V587 一统江湖

2fd2d9c1d175d11752585fa9b76aba29.gif

聋家狗 FU*CK YOU

13 楼

恋上你的味道

2014-03-20

花家狗V587 一统江湖

2fd2d9c1d175d11752585fa9b76aba29.gif

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,能返回吗?尝试过在里面加好像不起作用。我用是sql server 2005

SELECT SCOPE_IDENTITY() AS id

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}

9 楼

zq93741833

2012-11-23

小五哥丶 写道

妹的,全是SELECT,

select标签里面是可以包含insert语句

8 楼

hekuilove

2012-11-06

hanzhicheng754 写道

哥们,你插入的最大量是多少?

我是把大量的数据拆开来N个1000条来执行的,执行N次

哥们,你插入的最大量是多少?

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,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值