Spring namedparameterjdbctemplate 实现批量更新

最近开发中使用了spring的NamedParameterJdbcTemplate的批量更行操作

方法如下

 

public void insert(Collection<Person> entities) {
    SqlParameterSource[] params =       SqlParameterSourceUtils.createBatch(entities.toArray());
    namedJdbcTemplate.batchUpdate(insertSql, params);
}

 我们业务的实际需要使用的是

public int batchUpdateBeans(String insertSql, List<? extends Object> beans) {
		int[] results = null;
		try {
			SqlParameterSource[] params = SqlParameterSourceUtils
					.createBatch(beans.toArray());
			results = this.namedParameterJdbcTemplate.batchUpdate(insertSql,
					params);
		} catch (Exception e) {
			e.printStackTrace();
			log.error(e.getMessage(), e);
		}
		return results.length;
	}

 我们只需要传对应的sql 和封装的集合对象就可以实现批量更新了

如:

public int batchAddSupplyInfo(DUserInfo userInfo, List<DSupplyInfo> supplyList) {
		logger.info(System.currentTimeMillis() + "@" + userInfo.getAccount() + "#SupplyInfo.batchAddSupplyInfo");
		StringBuffer sqlKey = new StringBuffer();
		StringBuffer sqlValue = new StringBuffer();
		sqlKey.append("insert into supply_info ( ");
		sqlValue.append(" values ( ");
		sqlKey.append("id, name, lang, industry, "
				+ "logo, style, brands, products,"
				+ " telphone, contactMan, address, status,"
				+ "createBy, createTime, updateBy, updateTime )");
		sqlValue.append("seq_supply_info.nextval, :name, :lang, :industry, "
				+ ":logo, :style, :brands, :products,"
				+ " :telphone, :contactMan, :address, :status,"
				+ ":createBy, :createTime, :updateBy, :updateTime )");
		sqlKey.append(sqlValue);
		
		return baseDao.batchUpdateBeans(sqlKey.toString(), supplyList);
		
	}

 上述代码经过测试没问题。

 

另外我们可以用namedparameterJdbcTemplate的更新方法,传入sql和map集合即可

	public int addBuyerRank(User user, DBuyer buyer) {
				StringBuffer sqlKey = new StringBuffer("INSERT INTO BUYER (");
		StringBuffer sqlValue = new StringBuffer(" Values( ");
		Map<String, Object> paramMap = new HashMap<String, Object>();
		sqlKey.append(" id, ");
		sqlKey.append(" buyerid, ");
		sqlKey.append(" rank, ");
		sqlKey.append(" createby, ");
		sqlKey.append(" updateby, ");
		sqlKey.append(" updatetime) ");
		
		sqlValue.append("seq_buyer_rank");
		sqlValue.append(" :buyerid, ");
		sqlValue.append(" :rank, ");
		sqlValue.append(" :createby, ");
		sqlKey.append(" createtime, ");
		sqlValue.append(" :createtime, ");
		sqlValue.append(" :updateby, ");
		sqlValue.append(" :updatetime)");
		
		paramMap.put("buyerid", buyerRank.getBuyerId()) ;
		paramMap.put("rank", buyerRank.getRank());
		paramMap.put("createby", buyerRank.getCreateBy());
		paramMap.put("createtime", buyerRank.getCreateTime());
		paramMap.put("updateby", buyerRank.getUpdateBy());
		paramMap.put("updatetime", buyerRank.getUpdateTime());
	
		sqlKey.append(sqlValue);
		int update = 0;
		try {
			update = baseDao.getNamedParameterJdbcTemplate().update(sqlKey.toString(), paramMap);
		} catch (DataAccessException e) {
			
		}
		
		return update;
	}

 

你可能感兴趣的:(JdbcTemplate)