Spring SimpleJdbcTemplate 批处理
最近优化项目代码,想要实现批量操作,在网上看了不少spring关于批量操作的代码,很多写的云里雾里的,自己实现了半天,终于找到了一个比较简单而且高效的方法,大概如下:public void testBatchUpdate4() {
SimpleJdbcTemplate 易做图JdbcTemplate = new SimpleJdbcTemplate(jdbcTemplate);
String insertSql = "insert into test(phone,name) values(?,?)";
List<Object[]> params = new ArrayList<Object[]>();
for(int i=0;i<2;i++){
Object[] objects={"12345","name5"}
params.add(objects);
}
易做图JdbcTemplate.batchUpdate(insertSql, params);
}
本示例使用batchUpdate(String sql, List<Object[]> batchArgs)方法完成占位符批处理,当然也支持命名参数批处理等,感觉那样要麻烦些,代码如下。
public class BatchUpdate{
JdbcTemplate jdbctemp; //JdbcTemplate的获取不是我所讲的范围。 我们只管用spring得这一对象,
public static void main(String[] args) {
BatchUpdate bu = new BatchUpdate();
List list = bu.storeList();
bu.batchUpdateLinkset(list);
}
public List storeList(){
List linkset = new ArrayList<Linkset>();
linkset.setDOMAIN_ID("domain_idTeset");
linkset.setNE_ID("ne_idTEST");
linkset.setSIGLINKSET_NAME("SIGLINKSET_NAMEtest");
linkset.setN_CONFIRM(0);
linkset.setTIME_STAMP("2010-07-27 09:05:21");
updatelist.add(linkset);
}
/**************************************************************************
* 批量更新
*
* @param list
*/
public void batchUpdateLinkset(final List list) {
String sql = "update LINK_SET set N_CONFIRM=?,TIME_STAMP=?,DOMAIN_ID=?,SIGLINKSET_NAME=? where NE_ID=?";
jdbctemp.batchUpdate(sql, new BatchPreparedStatementSetter() {
public int getBatchSize() {
return list.size(); //这个方法设定更新记录数,通常List里面存放的都是我们要更新的,所以返回list.size();
}
public void setValues(PreparedStatement ps, int i)
throws SQLException {
Linkset linkset = (Linkset) list.get(i);
ps.setString(1, linkset.getCHINA_NAME());
ps.setString(2, linkset.getENGLISH_NAME());
ps.setInt(3, linkset.getN_CONFIRM());
ps.setString(4, linkset.getTIME_STAMP());
ps.setInt(5, linkset.getDOMAIN_ID());
ps.setString(6, linkset.getSIGLINKSET_NAME());
ps.setString(7, linkset.getNE_ID());
}
});
}
}
本人小白,发布此贴只是用来交流学习,如果文章中有不足之处,还望各位看官多多指教!
参考文章:http://www.ablanxue.com/shtml/201208/1051.shtml
http://blog.csdn.net/qian_348840260/article/details/5374731 spring SimpleJdbcTemplate 批处理
补充:Java , Web 开发