在使用ResultSetHandler封装的时候,无法封装数据,当然如果是你的实体和数据库的串行一一对应的话,还是失败,我建议你去检查一下哪里哪里写错了。

下面说的是:我们查询我们挑选的几个分区,然后我们去创建一个实体接收但是接收失败。

ResultSetHandler封装,的原理是,把实体的每一个属性按照属性名和数据库中的分割名对比相同的就进行封装,但是有时候我们用到了函数查询,没有相对应的分解怎办呢?

其实这个时候我们只需要把查到分段取一个别名就好了,这个别名就对应实体中的属性名。

 

我的实体:

package tourism.vo;
//归档信息
public class FileInfo {
	private String aname;		//归档名称
	private int number;			//归档数
	public String getAname() {
		return aname;
	}
	public void setAname(String aname) {
		this.aname = aname;
	}
	public int getNumber() {
		return number;
	}
	public void setNumber(int number) {
		this.number = number;
	}
}

我的查询封装:

//	查询归档数据
	public List<FileInfo> findFileInfo() {
		List<FileInfo> query = new ArrayList<FileInfo>();
		try {
			String sql = "select Date_Format(bcreatedate,'%Y-%m') as aname, count(*) as number 
                                        from blog group by Date_Format(bcreatedate,'%Y-%m') 
                                        order by Date_Format(bcreatedate,'%Y-%m') desc";
			query = runner.query(sql, new BeanListHandler<FileInfo>(FileInfo.class));
		} catch (SQLException e) {
			e.printStackTrace();
		}
		return query;
	}

注意看sql中的别名和实体的属性名一一对应。