wisdomx.ui.builder
クラス StatementBuilder

java.lang.Object
  拡張wisdomx.ui.builder.StatementBuilder

public class StatementBuilder
extends java.lang.Object

検索に使用する単純なPreparedStatementを作成するクラス
このクラスはSQL WHERE 以降の条件を組み立てます。
インスタンス生成時に、WHEREを含まない完全なSQL文字列を渡し、パラメータを設定します。設定したパラメータの値が nullの場合、設定したパラメータは無視されます。
update 2004/5/24
WITH UR対応 省略時にSQL文字列の最後に"WITH UR"が追加されます。追加したくない場合、コンストラクタで変更してください。

バージョン:
1
作成者:
Takao Kouda

コンストラクタの概要
StatementBuilder(java.lang.String selectFieldSQL, java.sql.Connection connection)
          コンストラクタ
StatementBuilder(java.lang.String selectFieldSQL, java.sql.Connection connection, boolean isUr)
          コンストラクタ
生成するSQL文字列に含まれる"WITH UR"を追加するか否か指定できるコンストラクタ
 
メソッドの概要
 void and(java.lang.String fieldValue, java.lang.String expression)
          AND条件を追加します。
 java.sql.PreparedStatement buildStatement()
          PreparedStatementを作成します。
 void or(java.lang.String fieldValue, java.lang.String expression)
          OR条件を追加します。
 void setGroupBy(java.lang.String groupBy)
          SQL GROUP BY文を設定します。
 void setOrderBy(java.lang.String orderBy)
          SQL ORDER BY文を設定します。
 
クラス java.lang.Object から継承したメソッド
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

コンストラクタの詳細

StatementBuilder

public StatementBuilder(java.lang.String selectFieldSQL,
                        java.sql.Connection connection)
コンストラクタ

パラメータ:
selectFieldSQL - SQL WHERE句までのSELECT文(WHEREも含まない)
connection - PreparedStatementを作成するDB接続

StatementBuilder

public StatementBuilder(java.lang.String selectFieldSQL,
                        java.sql.Connection connection,
                        boolean isUr)
コンストラクタ
生成するSQL文字列に含まれる"WITH UR"を追加するか否か指定できるコンストラクタ

パラメータ:
selectFieldSQL - SQL WHERE句までのSELECT文(WHEREも含まない)
connection - PreparedStatementを作成するDB接続
isUr - SQL文字列の最後にWITH URを追加するか否か。trueで追加し、falseで追加しない。
導入されたバージョン:
2004/5/24
メソッドの詳細

buildStatement

public java.sql.PreparedStatement buildStatement()
                                          throws java.lang.Exception
PreparedStatementを作成します。
作成されるオブジェクトは
Connection#prepareStatement(sql, ResultSet.TYPE_SCROLL_INSENSITIVE , ResultSet.CONCUR_READ_ONLY);
を使用し作成されるため、PreparedStatement実行で取得されるResultSetはスクロール可能です。

戻り値:
作成されたPreparedStatement
例外:
java.lang.Exception

and

public void and(java.lang.String fieldValue,
                java.lang.String expression)
AND条件を追加します。
 StatementBuilder buider = new StatementBuilder(
 	"SELECT USERID,DEPTNAME FROM USER LEFT OUTER JOIN DEPARTMENT USING (USER.DEPTID = DEPARTMENT.DEPTID)"
 ); 
 buider.and(parameterInputForm.getString("userid",null) , "USER.USERID = ?");

この場合、parameterInputFormから取得できるuseridの値がnullの場合、SQL文にWHERE条件は追加されない PreparedStatementが作成されます。useridの値がnull以外の場合、SQL文がWHERE USER.USERID = ? の PreparedStatementが作成され、パラメータも設定された状態になります。

条件の追加順序とおりにWHERE以降の条件が追加されますが、andメソッドの場合、この条件が追加される以前に 別の条件が追加されていた場合、このメソッドによる追加はAND条件として追加されます。

パラメータ:
fieldValue -
expression -

or

public void or(java.lang.String fieldValue,
               java.lang.String expression)
OR条件を追加します。
基本動作はand(String, String) }と同じです。orメソッドの場合、この条件が追加される以前に 別の条件が追加されていた場合、このメソッドによる追加はOR条件として追加されます。

パラメータ:
fieldValue -
expression -

setOrderBy

public void setOrderBy(java.lang.String orderBy)
SQL ORDER BY文を設定します。
このメソッドはbuildStatement()の中で作成されるSQL文の最後にORDER BY 文を追加するものです。
引数のorderByにSQL文 ORDER BY を含める必要はありません。


setGroupBy

public void setGroupBy(java.lang.String groupBy)
SQL GROUP BY文を設定します。
このメソッドはbuildStatement()の中で作成されるSQL文の最後にGROUP BY 文を追加するものです。
引数のgroupByにSQL文 GROUP BY を含める必要はありません。