Incorrect column count: expected 1, actual 4 問題
阿新 • • 發佈:2018-05-10
ble ngs title parameter property () bean temp per
解釋:
期望的結果是1, 實際的結果是 4 , 對象有4個屬性,表有4 個字段
原因:
- jdbcTemplate.queryForList(selectSql.toString(), entityClass) ;
this
.jdbcTemplate.queryForObject(sql, SysUser.
class
);
一 、而 queryForList 方法參數的解釋是這樣的:
Java代碼- Parameters:
- sql SQL query to execute
- elementType the required type of element in the result list (for example, Integer.class)
就是第2個參數在網上說只能是簡單類型String或Integer。
2、使用query查詢
Java代碼- jdbcTemplate.query(selectSql.toString(), rowMapper)
但多了一個參數rowMapper,這個參數需要定義為:
Java代碼- @SuppressWarnings("unused")
- private BeanPropertyRowMapper<T> rowMapper = new BeanPropertyRowMapper<T>(entityClass){
- @Override
- protected void initBeanWrapper(BeanWrapper bw) {
- super.initBeanWrapper(bw);
- }
- };
具體的作用就是進入查詢結果轉換成實體。
二、
jdbcTemplate.queryForObject(sql, requiredType) 中的requiredType應該為基礎類型,和String類型。
如果想查真正的object應該為
1 2 3 4 |
List<SysUser> userList = jdbcTemplate.query(sql, new Object[]{}, new BeanPropertyRowMapper<SysUser>(SysUser. class ));
if ( null !=userList&&userList.size()> 0 ){
SysUser user = userList.get( 0 );
}
|
Incorrect column count: expected 1, actual 4 問題