`
xs.cctv
  • 浏览: 20539 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
社区版块
存档分类
最新评论

ibatis 批量添加数据

阅读更多
ibatis 批量添加数据
自己项目中用到的。

	public void insertCiyt(final List<City> cityList) {
		// TODO Auto-generated method stub
		System.out.println("批量添加开始");

		SqlMapClientCallback callback = new SqlMapClientCallback() {
			public Object doInSqlMapClient(SqlMapExecutor executor)
					throws SQLException {
				int counter =1;
				executor.startBatch();
				for (City dto : cityList) {
                                        //需要插入的语句
					executor.insert("inserSql", dto);
					counter++;
					if (counter % 4000 == 0) {
						executor.executeBatch();
						executor.startBatch();
					}
				}
				executor.executeBatch();
				return null;//这里的返回值会被下面的Object接收到
			}
		};
		//num 接受的是每次批量处理多少条数据
		Object num = this.getSqlMapClientTemplate().execute(callback);

	}


下面配置文件里面的
<sqlMap namespace="City">
	<typeAlias alias="city" type="com.xxx.City" />
	<resultMap class="city" id="cityMap">
		<result property="cid" column="cid" />
		<result property="name" column="name" />
        </resultMap>

	<insert id="insertSql" parameterClass="city">
		<![CDATA[insert into u_city_copy(`cid`,`name`)
			values(#cid#,#name#);]]>	
	</insert>
</sqlMap>


另一种方法也可以:
@Override
	public void mergerLeagueRelation(final List<LeagueRelation> leagueRelation) {
		this.getSqlMapClientTemplate().execute(new SqlMapClientCallback(){
			public Object doInSqlMapClient(SqlMapExecutor executor)
					throws SQLException {
				executor.startBatch();
				int counter = 0;
				for (LeagueRelation temp : leagueRelation) {
					executor.insert("mergerLeagueRelation",temp);
					counter ++ ;
					if(counter%10000==0){
						executor.executeBatch();
						executor.startBatch();
					}
				}
				executor.executeBatch();
				return null;
			}
			
		});
	}
分享到:
评论
2 楼 xs.cctv 2013-04-15  
refar 写道
性能不行的哥们

确实不行,哥们有什么办法推荐一个,谢谢。
1 楼 refar 2013-04-10  
性能不行的哥们

相关推荐

    ibatis3批量插入

    通过Ibatis3xml文件配置+Mysql实现数据批量插入,原先在网上找很多,都是关于批量更新,批量插入的很少,而且其写法又完全不同,所以自己研究了一下。可供参考。另外插入时如出现内容报错,请参照my.cnf修改书库配置...

    iBATIS实战

    5.2 插入数据 84 5.2.1 使用内联参数映射 84 5.2.2 使用外部参数映射 85 5.2.3 自动生成的键 86 5.3 更新和删除数据 88 5.3.1 处理并发更新 88 5.3.2 更新或删除子记录 89 5.4 运行批量更新 90 5.5 使用存储过程 91 ...

    IbatisDemo04

    Ibatisnet 1,如何得到运行时ibatis.net动态生成的SQL语句? 2,如何获取DbCommand? 3,如何返回DataTable,DataSet? 4,批量数据的插入……

    java的轻量级orm工具包jdao.zip

    jdao有支持事务,支持批量插入数据等特性。同时jdao底层数据库操作提供接口,编程人员可以自己实现。 如果你觉得hibernate,ibatis等orm框架过于笨重,不烦试下jdao,它可以在团队开发中规范团队持久层代码,较少...

    【白雪红叶】JAVA学习技术栈梳理思维导图.xmind

    批量写入 配置中心 去中心化 通讯机制 同步 RPC RMI 异步 MQ Cron 数据层架构设计 缓存优化 DAO&ORM; 双主架构 主从同步 读写分离 性能优化架构能力 代码级别 关联代码优化 cache对其 分支预测 ...

    2021年最新java面试题--视频讲解(内部培训84个知识点超详细).rar

    Java面试题75:批量插入几百万条数据 Java面试题76:有没有使用过redis Java面试题77:redis的使用场景 Java面试题78:redis存储对象的方式 Java面试题79:redis数据淘汰机制 Java面试题80:java访问redis级redis...

    Spring中文帮助文档

    11.5.1. 使用SimpleJdbcInsert插入数据 11.5.2. 使用SimpleJdbcInsert来获取自动生成的主键 11.5.3. 指定SimpleJdbcInsert所使用的字段 11.5.4. 使用SqlParameterSource提供参数值 11.5.5. 使用SimpleJdbcCall...

    Spring API

    11.5.1. 使用SimpleJdbcInsert插入数据 11.5.2. 使用SimpleJdbcInsert来获取自动生成的主键 11.5.3. 指定SimpleJdbcInsert所使用的字段 11.5.4. 使用SqlParameterSource提供参数值 11.5.5. 使用SimpleJdbcCall...

    最新Java面试题视频网盘,Java面试题84集、java面试专属及面试必问课程

    │ Java面试题75:批量插入几百万条数据.mp4 │ Java面试题76:有没有使用过redis.mp4 │ Java面试题77:redis的使用场景.mp4 │ Java面试题78:redis存储对象的方式.mp4 │ Java面试题79:redis数据淘汰机制.mp4 │...

    JdbcTemplateTool.zip

    创建一张表employee插入一些测试数据.DROP TABLE IF EXISTS `employee`; CREATE TABLE `employee` (  `id` int(11) NOT NULL,  `name` varchar(300) NOT NULL,  `join_date` datetime NOT NULL,...

Global site tag (gtag.js) - Google Analytics