1. 程式人生 > >Incorrect column count: expected 1, actual 4 問題

Incorrect column count: expected 1, actual 4 問題

ble ngs title parameter property () bean temp per

解釋:

期望的結果是1, 實際的結果是 4 , 對象有4個屬性,表有4 個字段

原因:

  1. jdbcTemplate.queryForList(selectSql.toString(), entityClass) ;
  2. this.jdbcTemplate.queryForObject(sql, SysUser.class);

一 、而 queryForList 方法參數的解釋是這樣的:

Java代碼 技術分享圖片
  1. Parameters:
  2. sql SQL query to execute
  3. elementType the required type of element in the result list (for example, Integer.class)

就是第2個參數在網上說只能是簡單類型String或Integer。

2、使用query查詢

Java代碼 技術分享圖片
  1. jdbcTemplate.query(selectSql.toString(), rowMapper)

但多了一個參數rowMapper,這個參數需要定義為:

Java代碼 技術分享圖片
  1. @SuppressWarnings("unused")
  2. private BeanPropertyRowMapper<T> rowMapper = new BeanPropertyRowMapper<T>(entityClass){
  3. @Override
  4. protected void initBeanWrapper(BeanWrapper bw) {
  5. super.initBeanWrapper(bw);
  6. }
  7. };

具體的作用就是進入查詢結果轉換成實體。

二、

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 問題