当前位置: 首页 > 工具软件 > Bean Query > 使用案例 >

JdbcTemplate.query返回数据库某行的list数据并按照自定义bean输出

姜晨
2023-12-01

  • 可直接跳转到Service层。

写此文原因:
调用jdbc.queryForObject时抛出异常:INCORRECT COLUMN COUNT: EXPECTED 1, ACTUAL 3
即:预期1列,但查出来的数据有3列。

自定义bean

package com.lm.hadoop.Vo;

public class NetDiskUser {
    public String userId;
    public long all;
    public long bll;
    
    public String getUserId() {
        return userId;
    }
    public void setUserId(String userId) {
        this.userId = userId;
    }

    public long getAll() {
        return all;
    }

    public void setAll(long all) {
        this.all = all;
    }
    
   public long getBll() {
        return bll;
    }

    public void setBll(long bll) {
        this.bll = bll;
    }
    public NetDiskUser(){}
}

mysql

userid——string
a——longint
b——longint

(不想贴图了)

Service层

使用方式
String sql = "SELECT a,b FROM table where userid ="+"'" +userid+"'";
//把查询的结果封装到集合中,即使没有查询到,集合size=0 ,不会有异常
List<NetDiskUser> list = jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(NetDiskUser.class));
调用方式(发现好多帖子都没出这个如何调出对象,可能是因为太简单了)
//迭代器遍历(不然返回对象地址)
 for(Iterator<NetDiskUser> it=list.iterator();it.hasNext();){
NetDiskUser  netDiskUser=it.next();
//调用bean方法输出
Long all= netDiskUser.getAll();
Long bll= netDiskUser.getBll();
it.remove();
}

jdbc.queryForObject的三个参数

jdbc.queryForObject(sql语句,要传入的object值,返回类型)

参数名参数值举例
sql语句sql“select count(*) from table where userid=?”
传入的object值new Object[](对应sql语句中?的值)new Object[](userid)
返回类型基本类型String.class、Interger.class
 类似资料: