S2DAOで外部SQL実行

簡単なSQLである場合は、
S2DAOSQLを自動生成させて、
データを取得できるが、


複雑になると自動生成できなくなり、
外部SQLSQLを記述し、それを実行する形となる。


外部SQLのファイル名は、次のようにする必要がある。
対象のDaoインターフェース名 + '_' + メソッド名 + '.sql'


例えば、"sampleDaoクラス"のメソッド名が"selectEmpOut"の場合、
ファイル名は、"sampleDao_selectEmpOut.sql"となる。

Daoクラス **

package pkg.dao;

import java.util.List;

import org.seasar.dao.annotation.tiger.Query;
import org.seasar.dao.annotation.tiger.S2Dao;
import org.seasar.dao.annotation.tiger.SqlFile;

import pkg.entity.Emp;

@S2Dao(bean=Emp.class)
public interface EmpDao {
  //外部SQL
  //IDの最大値を取得する
  @SqlFile
  public int selectMaxIdEmp();
}


EmpDao_selectMaxIdEmp.sql **

最大値(Max)を取得する。
SELECT max(ID) as id FROM EMP


Daoを利用するクラス **

package pkg;

import java.util.Date;
import org.seasar.framework.container.S2Container;
import org.seasar.framework.container.factory.SingletonS2ContainerFactory;
import pkg.dao.EmpDao;
import pkg.entity.Emp;

public class S2daoInsert {

  /**
   * 外部SQLを実行する。
   * @param args
   */
  public static void main(String[] args) {
    SingletonS2ContainerFactory.init();
    S2Container container = SingletonS2ContainerFactory.getContainer();
    //DAO作成
    EmpDao empdao = (EmpDao)container.getComponent(EmpDao.class);
  //外部SQL実行
    int maxId = empdao.selectMaxIdEmp();
    System.out.println("MaxID=" + maxId );
  }
}