[Seasar-user:12657] [SAStruts + S2JDBC]
出羽 健一
[E-MAIL ADDRESS DELETED]
2008年 1月 28日 (月) 17:07:02 JST
出羽です、お疲れ様です。
SAStruts + S2JDBCで以下のような日付範囲検索
プログラムを実装してみました。
/** 検索条件: 従業員名の前方一致 */
public String condition_name_STARTS;
/** 検索条件:入社日の範囲検索(開始) */
@DateType
public String condition_hireDate_GE;
/** 検索条件:入社日の範囲検索(終了) */
@DateType
public String condition_hireDate_LE;
@Execute(validator = false)
public String list() {
empItems = jdbcManager.from(Emp.class)
.leftOuterJoin("dept")
.where(Beans.createAndCopy(BeanMap.class, this)
.prefix("condition_")
.dateConverter("yyyyMMdd", "hireDate")
.execute())
.orderBy("hireDate")
.getResultList();
return "list.jsp";
}
以下は、condition_name_STARTS プロパティ、及び、
condition_hireDate_LEプロパティに空文字が
セットされた場合に 生成されるSQLです。
select
T1_.ID, T1_.NAME, T1_.HIRE_DATE,
T1_.DEPT_ID, T1_.VERSION_NO,
T2_.ID, T2_.NAME, T2_.VERSION_NO
from
EMP T1_ left outer join DEPT T2_ on T1_.DEPT_ID = T2_.ID
where
T1_.HIRE_DATE >= '1982-01-01'
and T1_.NAME like '%'
and T1_.HIRE_DATE <= null
order by
T1_.HIRE_DATE
『and T1_.HIRE_DATE <= null』の条件は
生成しなくても良いと思ったのですがいかがでしょうか?
(検索結果が0件になってしまいます。)
同様に、『and T1_.NAME like '%'』の条件についても
NAMEフィールドの値が null のレコードがヒットしないので、
生成しなくても良いと思ったのですがいかがでしょうか?
jarファイルのバージョン等は、
sa-struts-tutorial-1.0.0.zip と同じです。
Seasar-user メーリングリストの案内