import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate
import test.entity.UserInfo
String sql = "select city from tbl_user where userName like :username";
UserInfo userRequest = new UserInfo();
userRequest.setUsername("%陈%");
userRequest.setCity("城市"); // 改类有城市
NamedParameterJdbcTemplate.queryForList(sql, new BeanPropertySqlParameterSource(userRequest), UserInfo.class);
一直报错
org.springframework.dao.TypeMismatchDataAccessException: Type mismatch affecting row number 0 and column type 'VARCHAR2': Value [广州] is of type [java.lang.String] and cannot be converted to required type [test.entity.UserInfo]
//------------分割线-----------
如果:
String sql = "select userName, city from tbl_user where userName like :username";
错误如下:
org.springframework.jdbc.IncorrectResultSetColumnCountException: Incorrect column count: expected 1, actual 2
真是蛋痛,还是使用返回List<Map<String, Object>>的queryForList好了,不过要转类型麻烦。一直很忙,感觉累啊。
你查询出来的[广州]是一个字符串,不能被转换为UserInfo类。其实需要查询出很多字段,只是刚开始的时候报错,后来我就试了下查询一列。可是UserInfo类有city字段,有getCity,setCity方法。我就是想Spring自动封装成UserInfo类,你看我使用的queryForList第3个参数。为什么不自动封装呢,我查询多个字段也报错,哎,真是个悲剧。使用返回List<Map<String,Object>>的queryForList是可以的。
<atarget="_blank"rel="nofollow">https://github.com/hantsy/spring-sandbox/blob/master/dao/src/main/java/com/hantsylabs/example/spring/jdbc/NamedParamJdbcTemplateConferenceDaoImpl.java
<atarget="_blank"rel="nofollow">https://github.com/hantsy/spring-sandbox/wiki/legacy-dao-support
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。