具体是这样使用的:
循环2000条数据例如数据被装到了一个名叫dataList的List<Map<String,String>>中,那么批量更新就是这样执行的
Map map = null
String data1= ""
String data2 = ""
String sql = insert into biao values(?,?)
PreparedStatement preStmt = conn.prepareStatement(sql)
for(i = 0i<dataList.size()i++){
map = dataList.get(i)
data1=map.get("data1")
data2 = map.get("data2")
preStmt.setString(1,data1)
preStmt.setString(2, data2)
preStmt.addBatch()
}
preStmt.executeBatch()
preStmt.clearBatch()
Hibernate有个回调接口HibernateCallback() ,事务可由Spring管理,具体例子可以Google想要指定每次批量 *** 作的数可以这样
public void batchSaveData(final List<?>dataList,final int batchCount) {
return this.getHibernateTemplate().execute(new HibernateCallback() {
@Override
public Object doInHibernat(Session session) throws HibernateException, SQLException {
for (int i = 0i <dataList.size()i++) {
session.save(dataList.get(i))
//如果想每1000条一次批处理,调用方法时batchCount传入1000
if (i % batchCount== 0) {
session.flush()
session.clear()
}
//保存剩余的数据
session.flush()
session.clear()
}
return null
}
})
}
for(int i=0i<this.DataList.Items.counti++){
Label LbId=(Label)this.DataList.Items[i].FindControl("LbId")
Label LbName=(Label)this.DataList.Items[i].FindControl("LbName")
string sql="insert into tb_name(Id,Name) values('"+LaId.Text+"','"+LbName.Text+"',)"
//在此 *** 作改SQL语句即可,有问题HI我
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)