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);
}
}
}