QUERYのカスタマイズ2(バインド変数)
SQL中に?を書きたくない場合はバインド変数を利用する。
public static final String findByTitle_ARGS = "prmtitle"; public static final String findByTitle_QUERY = "select * from cd where title = /*prmtitle*/"; public List findByTitle(String title);
このメソッドを実行すると、
発効されるSQLは以下のようになる(引数に'あああ'と渡した場合)。
select * from cd where title = 'あああ'
バインド変数は、ARGSアノテーションで指定した名前(あるいはBEANのプロパティー)をSQL中で"/*名前*/"という風に指定できる。上の例は、ARGSアノテーションで指定した名前prmtitleをSQL文中で置き換えている。
EL式みたいな感じでJavaBeansにアクセスすることも可能。
public static final String findByCriteria_ARGS = "criteria"; public static final String findByCriteria_QUERY = "title = /*criteria.title*/"; public List findByCriteria(Criteria criteria);
この場合、Criteriaクラスのtitleプロパティーの値(getTitle()の返り値)が代入される。