2007年12月23日日曜日

Seasar: S2JDBC 外出しSQL

ZK + Seasar:JFreeChartで使った降雨量の年間平均をS2JDBCの外出しSQLで求めてみました。

  • 年と平均降雨量を格納するDTOを作成します。

    package zkseasar.dto;

    public class RainfallAvgDto {
    public Integer year;
    public Double average;
    }

  • RainStatsServiceに年間平均降雨量を取り出すメソッドを追加します。
    DTOのプロパティ名とSQLのカラム名を統一するだけでSQLを実行した結果がDTOへ自動的にマッピングされるようです。

    ...
    public List selectRainfallAvg(){
    return jdbcManager.selectBySql(RainfallAvgDto.class,
    " select year, avg(rainfall) as average" +
    " from rain_stats " +
    " group by year " +
    " order by year ")
    .getResultList();
    }
    ...


  • S2TestCaseを継承したクラスを作り動作確認します。
    EclipseのメニューからRun>Debug As>JUnit Testで実行できます。

    public class RainStatsServiceTest extends S2TestCase {
    private JdbcManager jdbcManager;

    protected void setUp() throws Exception {
    include("app.dicon");
    }

    public void testSelectRainfallAvg() throws Exception {
    RainStatsService rainStatsService =
    SingletonS2Container.getComponent("rainStatsService");

    List results =
    rainStatsService.selectRainfallAvg();
    for (RainfallAvgDto dto : results) {
    System.out.println(dto.year + ":"+ dto.average);
    }
    }
    }
  • 0 件のコメント: