[Seasar-user:954] S2Dao:バインド変数コメント:ANDの消去
jazzatny
jazzatny
2004年 8月 24日 (火) 21:03:55 JST
佐藤です。
続けてすみません。
バインド変数コメントでのANDの消去ですが、
-- ELSE
の時に消去されません。
例:
S2Daoのexamples.daoのEmployeeDao_getEmployeeByJobDeptno.sqlを
次のように書き換えます。
SELECT * FROM emp
/*BEGIN*/WHERE
/*IF job != null*/job = /*job*/'CLERK'/*END*/
/*IF deptno != null*/AND deptno = /*deptno*/20
-- ELSE AND deptno = 30
/*END*/
/*END*/
次に、EmployeeDaoClient.javaの29行目からの
dao.getEmployeeByJobDeptnoの実行順を
dao.getEmployeeByJobDeptno("CLERK", null); //(1)
dao.getEmployeeByJobDeptno(null, new Integer(20)); //(2)
dao.getEmployeeByJobDeptno("CLERK", new Integer(20));//(3)
dao.getEmployeeByJobDeptno(null, null); //(4)
にします。
すると生成されるSQLは
(1)
SELECT * FROM emp
WHERE job = 'CLERK'
AND deptno = 30
(2)
SELECT * FROM emp
WHERE deptno = 20
(3)
SELECT * FROM emp
WHERE job = 'CLERK'
AND deptno = 20
(4)
SELECT * FROM emp
WHERE
AND deptno = 30
となります。
(2)では/*IF deptno != null*/AND deptno = /*deptno*/20の
ANDが消去されていますが、
(4)では-- ELSE AND deptno = 30の
ANDが消去されていません。
よろしくお願いします。
Seasar-user メーリングリストの案内