NamedParameterJdbcTemplate与ssh3中的HibernateDao中in语句中涉及到集合元素的区别

1.HibernateDao的用法:

public void betch_update_category(Long[] goodsIds,Long destCategoryId){
	String hql = "update com.prl.entity.Goods set category = :category where goodsId in (:goodsIdStr)";
	
	Category category = categoryManager.get(destCategoryId);
	
	Map param = new HashMap();
	param.put("category", category);
	param.put("goodsIdStr", goodsIds);
	goodsDAO.batchExecute(hql,param);		
}

 

2.NamedParameterJdbcTemplate的用法:

NamedParameterJdbcTemplate namedParameterJdbcTemplate = (NamedParameterJdbcTemplate)applicationContext.getBean("namedParameterJdbcTemplate");

List<Long> subtractDb = new ArrayList<Long>();
subtractDb.add(1L);

SqlParameterSource deleteParamSource = new MapSqlParameterSource().addValue("goodsId",goodsId).addValue("giftIdCollecton",subtractDb);

namedParameterJdbcTemplate.update("delete from goods_gift where goods_id = :goodsId and gift_Id in (:giftIdCollecton)", deleteParamSource);
 

 

看到区别没?HibernateDao中集合的表示形式须为数组,而NamedParameterJdbcTemplate则为列表,而且必须是这样的,如果HibernateDao中传递的参数为list,而NamedParameterJdbcTemplate传递成array,你得到的结果永远为空,切记,这个问题困扰了我很久,特记于此

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值