• Incorrect column count: expected 1, actual 5,JdbcTemplate queryForList 出错


    spring JdbcTemplate  queryForList 出错

    Incorrect column count: expected 1, actual 5

    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

    ©Copyright 蕃薯耀 2017年7月10日

    http://www.cnblogs.com/fanshuyao/

    一、问题描述:

    查询时使用JdbcTemplate 中的queryForList发生错误,如下:

    查询方法如下:

    Java代码  收藏代码
    1. jdbcTemplate.queryForList(selectSql.toString(), entityClass)  

    查询sql如下:

    Sql代码  收藏代码
    1. select * from test where 1=1 order by create_time desc limit 0,10  

    错误如下:

    Java代码  收藏代码
    1. Incorrect column count: expected 1, actual 5  

    二、解决方案:

    1、上面错误的原因是,查询返回的结果列期望为1,但实际返回的是5列,因为test表中有5个字段,故返回5列。而这个方法参数的解释是这样的:

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

    具体的作用就是进入查询结果转换成实体。

    到这步也就解决问题了。

    >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

    ©Copyright 蕃薯耀 2017年7月10日

    http://www.cnblogs.com/fanshuyao/

  • 相关阅读:
    ModelSim中Altera仿真库的添加
    0欧电阻之作用
    Modelsim之时序仿真
    FPGA之常见错误
    【转】VCC、VDD、VEE、VSS应用
    FROM 子句一个或多个派生表
    asp.net笔记
    GridView分页,个人认为比较简单的。
    GridView中模拟RadioButton组代码
    SPSWC:SearchBoxEx控件
  • 原文地址:https://www.cnblogs.com/fanshuyao/p/7147309.html
Copyright © 2020-2023  润新知