当前位置:编程学习 > JAVA >>

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 开发
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,