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