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;
}
});
}
分享到:
相关推荐
通过Ibatis3xml文件配置+Mysql实现数据批量插入,原先在网上找很多,都是关于批量更新,批量插入的很少,而且其写法又完全不同,所以自己研究了一下。可供参考。另外插入时如出现内容报错,请参照my.cnf修改书库配置...
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 ...
Ibatisnet 1,如何得到运行时ibatis.net动态生成的SQL语句? 2,如何获取DbCommand? 3,如何返回DataTable,DataSet? 4,批量数据的插入……
jdao有支持事务,支持批量插入数据等特性。同时jdao底层数据库操作提供接口,编程人员可以自己实现。 如果你觉得hibernate,ibatis等orm框架过于笨重,不烦试下jdao,它可以在团队开发中规范团队持久层代码,较少...
批量写入 配置中心 去中心化 通讯机制 同步 RPC RMI 异步 MQ Cron 数据层架构设计 缓存优化 DAO&ORM; 双主架构 主从同步 读写分离 性能优化架构能力 代码级别 关联代码优化 cache对其 分支预测 ...
Java面试题75:批量插入几百万条数据 Java面试题76:有没有使用过redis Java面试题77:redis的使用场景 Java面试题78:redis存储对象的方式 Java面试题79:redis数据淘汰机制 Java面试题80:java访问redis级redis...
11.5.1. 使用SimpleJdbcInsert插入数据 11.5.2. 使用SimpleJdbcInsert来获取自动生成的主键 11.5.3. 指定SimpleJdbcInsert所使用的字段 11.5.4. 使用SqlParameterSource提供参数值 11.5.5. 使用SimpleJdbcCall...
11.5.1. 使用SimpleJdbcInsert插入数据 11.5.2. 使用SimpleJdbcInsert来获取自动生成的主键 11.5.3. 指定SimpleJdbcInsert所使用的字段 11.5.4. 使用SqlParameterSource提供参数值 11.5.5. 使用SimpleJdbcCall...
│ Java面试题75:批量插入几百万条数据.mp4 │ Java面试题76:有没有使用过redis.mp4 │ Java面试题77:redis的使用场景.mp4 │ Java面试题78:redis存储对象的方式.mp4 │ Java面试题79:redis数据淘汰机制.mp4 │...
创建一张表employee插入一些测试数据.DROP TABLE IF EXISTS `employee`; CREATE TABLE `employee` ( `id` int(11) NOT NULL, `name` varchar(300) NOT NULL, `join_date` datetime NOT NULL,...