S2JDBCで外部SQL

S2JDBCで外部SQLを実行する。

//ロジッククラス
public class EmpService extends AbstractService<Emp> {
    public List<Emp> outSqlSelectAll(){
        return selectBySqlFile(Emp.class, "selectAll.sql").getResultList();
    }
}
//ロジッククラスのスーパークラス
public abstract class AbstractService<ENTITY> extends S2AbstractService<ENTITY> {
 //オーバーライド
  protected void setEntityClass(Class<ENTITY> entityClass) {
    this.entityClass = entityClass;
    sqlFilePathPrefix = "sql/";
  }
}



SQLファイルをresource/sqlフォルダを作成し、
sqlフォルダにファイル"selectAll.sql"を作成する。

select * from emp

パラメータ有(1個)

  public List<Emp> outSqlSelectWhere(){
   return selectBySqlFile(Emp.class,"selectWhereSal.sql",2000).getResultList();
  }

SQL

select * from emp 
where sal > /*salMin*/1000

パラメータ有(複数)

SQLファイルのパラメータが複数の場合は、
selectBySqlFile() の3番目の引数をJavaBeansまたは
Map にして、 パラメータの名前と
JavaBeansのプロパティ名または Map のキーを一致させます。

  public List<Emp> outSqlSelectWhereMult(){
    Map map = new HashMap();
    map.put("salMin", 2000);
    map.put("deptId", 2);
    return selectBySqlFile(Emp.class, "selectWhereMult.sql",map).getResultList();
  }

SQL

select * from emp 
where sal > /*salMin*/1000
and dept_id = /*deptId*/1


【参考サイト】
Seasar2 - S2JDBC - JdbcManager - SQLファイルによる操作
http://bw2hr.cocolog-nifty.com/blog/2009/01/s2jdbcsql-8af1.html