我在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}]