我在Spring框架中创建MVC Web应用程序,我需要将行从Apache DBUtils结果集转换为由嵌套对象组成的JavaBean。如何将DBUtils结果集转换为从更多的域对象合成的JavaBeans?
关于我发现的很少的例子,我创建了这个RowProcessor实现。
public class MonthOrderCountHandler extends BasicRowProcessor {
@Override
public Object toBean(ResultSet rs, Class type) throws SQLException {
// Year
Year year = new Year();
year.setYearNo(rs.getInt("yearNo"));
year.setYear4(rs.getString("year4"));
year.setYear2(rs.getString("year2"));
// Quarter
Quarter quarter = new Quarter();
quarter.setQuarter(rs.getInt("quarter"));
// Month
Month m = new Month();
m.setYear(year);
m.setQuarter(quarter);
m.setMonthAbbreviation(rs.getString("monthAbbreviation"));
m.setMonthName(rs.getString("monthName"));
m.setMonthNo(rs.getInt("monthNo"));
// Final bean
MonthOrderCount result = new MonthOrderCount();
result.setMonth(m);
result.setOrderCount(rs.getInt("orderCount"));
return result;
}
}
问:我想知道,知道如何在我的DAO对象,如果这个实现是正确使用此行处理器?
通常我变换行成的JavaBeans这样:
ResultSetHandler<List<MonthOrderCount>> listUrlHandler = new BeanListHandler<>(MonthOrderCount.class);
但在我的情况第一Ineed创建嵌套的对象,然后创建一个最终的JavaBean,所以我想我需要自定义行处理器。我的域对象的
结构是:
MonthOrderCount类:
public class MonthOrderCount {
private Month month;
private int orderCount;
}
Month类:
public class Month {
private Quarter quarter;
private Year year;
private int monthNo;
private String monthName;
private String monthAbbreviation;
}
季度类:
public class Quarter {
private int quarter;
private String abbreviation;
}
年等级:
public class Year {
private int yearNo;
private String year2;
private String year4;
}
编辑:我问,因为我的结果看起来是这样的。 orderCount变量已正确填充,但在所有实例中month都为空。对我来说什么是最奇怪的 - toBean()方法永远不会被调用。
2013年3月10日17时09分46秒INFO ChartDataService:29 - [MonthOrderCount {一个月= NULL,定单计数= 1863}, MonthOrderCount {一个月= NULL,定单计数= 2262}, MonthOrderCount {月= NULL,定单计数= 2531}, MonthOrderCount {一个月= NULL,定单计数= 2379}, MonthOrderCount {一个月= NULL,定单计数= 2106}, MonthOrderCount {一个月= NULL,定单计数= 1498}, MonthOrderCount {月=空,orderCount = 1300}, MonthOrderCount {month = null,orderCount = 1578}, MonthOrderCount {month = null,orderCount = 2385}, MonthOrderCount {month = null,orderCount = 2991}, MonthOrderCount {月= NULL,定单计数= 2219}, MonthOrderCount {月= NULL,定单计数= 1943年}, MonthOrderCount {月= NULL,定单计数= 264}]