Spring JdbcTemplate 批量插入或更新操作

Spring JdbcTemplate 批量插入或更新操作

用 JdbcTemplate 进行批量插入或更新操作

方法一:

代码只是测试用的一个小例子。

public int insertContractAch(List list) throws DataAccessException {   
    final List temList = list;   
    String sql = "insert into contract_ach_t " +   
            " values(?,to_date(?,'yyyy-mm-dd'),?,?) ";   
    try{   
        int[] ii = this.getJdbcTemplate().batchUpdate(sql, new MyBatchPreparedStatementSetter(temList));   
        return ii.length;   
    }catch (org.springframework.dao.DataAccessException e) {   
        e.printStackTrace();   
        throw new DataAccessException(e.getMessage());   
    }   
}   
/** 
* 处理批量插入的回调类 
* */   
private class MyBatchPreparedStatementSetter implements BatchPreparedStatementSetter{   
    final List temList;   
    /**通过构造函数把要插入的数据传递进来处理*/   
    public MyBatchPreparedStatementSetter(List list){   
        temList = list;   
    }   
    public int getBatchSize() {   
        return temList.size();   
    }   
   
    public void setValues(PreparedStatement ps, int i)   
            throws SQLException {   
        ContractAchVO contractAchVO = (ContractAchVO)temList.get(i);   
        ps.setString(1, contractAchVO.getContractCode());   
        ps.setString(2, contractAchVO.getCreateDate());   
        ps.setString(3, contractAchVO.getEmployeeId());   
        ps.setString(4, contractAchVO.getPercent());   
    }   

方法二:

//插入很多书(批量插入用法) 
public void insertBooks(List<Book> book) 

  final List<Book> tempBook=book; 
  String sql="insert into book(name,pbYear) values(?,?)"; 
  jdbcTemplate.batchUpdate(sql, new BatchPreparedStatementSetter() 
  { 
   public void setValues(PreparedStatement ps,int i)throws SQLException 
   { 
    String name=tempBook.get(i).getName(); 
    int pbYear=tempBook.get(i).getPbYear(); 
    ps.setString(1, name); 
    ps.setInt(2, pbYear); 
   } 
   public int getBatchSize() 
   { 
    return tempBook.size(); 
   } 
  }); 
    

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值