springjdbc NamedParameterJdbcTemplate 数据转换无效

namedParameterJdbcTemplate.queryForInt(queryCountString,map);

当执行词条语句的时候,在匹配map中参数的时候,如果map中的value值是数组的话,程序会抛出异常:数据转换无效:参数实例 [Ljava.lang.String;@883a6a23 对于所请求的转换无效。
解决方法,在项目中我使用了hibernate查询替换springjdbc的方式:

 
Query queryCountObject = session.createSQLQuery(queryCountString);
		mergeParameter(queryCountObject, map);


private void mergeParameter(Query query, Map map) {

		if (map == null || map.isEmpty()) {
			return;
		}

		String key = null;
		Object ob = null;

		for (Iterator it = map.keySet().iterator(); it.hasNext();) {
			key = (String) it.next();
			ob = map.get(key);
			if (ob == null) {
				query.setParameter(key, null);
				continue;
			}

			if (ob instanceof String) {
				query.setString(key, (String) ob);

			} else if (ob instanceof Integer) {
				query.setInteger(key, ((Integer) ob).intValue());

			} else if (ob instanceof Long) {
				query.setLong(key, ((Long) ob).longValue());

			} else if (ob instanceof Date) {
				query.setDate(key, (Date) ob);

			} else if (ob instanceof Object[]) {
				query.setParameterList(key, (Object[]) ob);
			} else if (ob instanceof List) {
				query.setParameterList(key, (List) ob);
			}

		}
	}

     

           


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值