Spring 3.x的NamedParameterJdbcTemplate.queryForList

不喜欢吃素的菜鸟 发布于 2013/10/27 17:01
阅读 3K+
收藏 1
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好了,不过要转类型麻烦。一直很忙,感觉累啊。

加载中
0
antipro
antipro
你查询出来的[广州]是一个字符串,不能被转换为UserInfo类。
不喜欢吃素的菜鸟
不喜欢吃素的菜鸟
其实需要查询出很多字段,只是刚开始的时候报错,后来我就试了下查询一列。
不喜欢吃素的菜鸟
不喜欢吃素的菜鸟
可是UserInfo类有city字段,有getCity,setCity方法。我就是想Spring自动封装成UserInfo类,你看我使用的queryForList第3个参数。 为什么不自动封装呢,我查询多个字段也报错,哎,真是个悲剧。 使用返回List<Map<String,Object>>的queryForList是可以的。
0
逝水fox
逝水fox
如果要返回Bean的List,用query方法和RowsMap
0
光石头
光石头
刚才手机手误删除了评论,你可以参见#springrain#
返回顶部
顶部