SpringFrameworkでMVCWebアプリケーションを作成していますが、ApacheDBUtils結果セットの行をネストされたオブジェクトで構成される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);
しかし、私の状況では、最初にネストされたオブジェクトを作成し、次に最終的なJavaBeanを作成する必要があるため、カスタム行プロセッサーが必要であると想定しています。
私のドメインオブジェクトの構造は次のとおりです。
MonthOrderCountクラス:
public class MonthOrderCount {
private Month month;
private int orderCount;
}
月クラス:
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変数は適切に入力されていますが、すべてのインスタンスで月はnullです。私にとって最も奇妙なことは何ですか-toBean()メソッドが呼び出されることはありません。
2013-03-10 17:09:46 INFO ChartDataService:29-[MonthOrderCount {month = null、orderCount = 1863}、MonthOrderCount {month = null、orderCount = 2262}、MonthOrderCount {month = null、orderCount = 2531}、MonthOrderCount {month = null、orderCount = 2379}、MonthOrderCount {month = null、orderCount = 2106}、MonthOrderCount {month = null、orderCount = 1498}、MonthOrderCount {month = null、orderCount = 1300}、MonthOrderCount {month = null、orderCount = 1578}、MonthOrderCount {month = null、orderCount = 2385}、MonthOrderCount {month = null、orderCount = 2991}、MonthOrderCount {month = null、orderCount = 2219}、MonthOrderCount {month = null、orderCount = 1943}、MonthOrderCount { month = null、orderCount = 264}]