写此文原因:
调用jdbc.queryForObject时抛出异常:INCORRECT COLUMN COUNT: EXPECTED 1, ACTUAL 3
即:预期1列,但查出来的数据有3列。
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(){}
}
userid——string
a——longint
b——longint
(不想贴图了)
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(sql语句,要传入的object值,返回类型)
参数名 | 参数值 | 举例 |
---|---|---|
sql语句 | sql | “select count(*) from table where userid=?” |
传入的object值 | new Object[](对应sql语句中?的值) | new Object[](userid) |
返回类型 | 基本类型 | String.class、Interger.class |