S2DAOで外部SQL実行
簡単なSQLである場合は、
S2DAOにSQLを自動生成させて、
データを取得できるが、
複雑になると自動生成できなくなり、
外部SQLにSQLを記述し、それを実行する形となる。
外部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 ); } }