使用JDBC在MySQL数据库中如何快速批量插入

使用JDBC在MySQL数据库中如何快速批量插入,第1张

可以使用jdbc预编译+批量更新,这样的执行效率最高。

具体是这样使用的:

循环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我

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/bake/11266769.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存