[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 メーリングリストの案内