ibatis中批量数据更新问题

lianghao_721 2012-03-17 04:45:44
ibatis配置文件中 有 update $t_table$ set $column$=$now_mk$ where $column$=$pre_mk$ 的一个更新的sql

假如有1000W行数据该怎样更新?这个更新的sql该怎么写呀?
...全文
411 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
SimulateC 2012-03-19
  • 打赏
  • 举报
回复
循环这个我知道,现在也就是这么做的, 但是当数据量是1000W条的时候呢?循环遍历数据进行修改的话,就很耗时了,我知道好像有一种直接在sql的xml里边配置iterator的,不太明白这个配置
小蜗 2012-03-19
  • 打赏
  • 举报
回复
/**
* 应用WEB服务器配置
*
* @return
*/
public void serviceWebIpConfig(String serviceId , String[] webIpArray ) throws SQLException {

try {
SqlMapClient sqlmapclient = this.getSqlMapClient();
sqlmapclient.startBatch();

//删除当前应用配置WEB服务器信息 - 物理删除
getSqlMapClientTemplate().delete("Wap.deleteServerWebConfig", serviceId);
//插入新增应用WEB服务器配置信息
for(int i = 0;i<webIpArray.length;i++){

ServerWebConfigInfo swci = new ServerWebConfigInfo();

swci.setServiceId(serviceId);

swci.setWebId(webIpArray[i]);

getSqlMapClientTemplate().insert("Wap.insertServiceWebInfo", swci);

}
//更新应用状态位
getSqlMapClientTemplate().update("ServiceInfo.updateServiceTime", serviceId);

sqlmapclient.executeBatch();
} catch (SQLException e) {
throw new SQLException(e.toString());
}

}
小蜗 2012-03-19
  • 打赏
  • 举报
回复
update $t_table$ set $column$=$now_mk$ where $column$=$pre_mk$

pre_mk和now_mk的值是定值么?

如果是定值那么这个SQL 就可以啊

如果是变值 SQL 也不用改变 采用批量处理方式,循环更新 写在一个事务里 就可以了

25,980

社区成员

发帖
与我相关
我的任务
社区描述
高性能WEB开发
社区管理员
  • 高性能WEB开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧