SqlBuilder

フレームワーク部品 [com.onepg.db]

← クラス一覧に戻る

クラス情報

パッケージ: com.onepg.db

クラス名: SqlBuilder

継承: SqlBean

説明

SQLビルダー.
  • DBアクセス時に必要な SQLとパラメーターリストを内包するクラスです。
  • SQLの組み立てとパラメーターのセットを同時に行えるメソッドを持ちます。
  • add*メソッドは自インスタンスを返すのでメソッドチェーンで使えます。
[SQL追加例1] sqlBuilder.addQuery("AND a.user_id IS NOT NULL ");
[SQL追加例2] sqlBuilder.addQuery("AND a.user_id = ? ", userId);
[SQL追加例3] sqlBuilder.addQuery("AND ? <= a.birth_dt AND a.birth_dt <= ?", birthDtFrom, birthDtTo);
[SQL追加例4] sqlBuilder.addQnotB("AND a.user_id = ? ", userId);
[SQL追加例5] sqlBuilder.addQnotB("AND a.user_id = ? ", userId).addQnotB("AND a.user_nm LIKE ? ", '%' + name + '%');
[SQL実行例] SqlResultSet rSet = SqlUtil.select(getDbConn(), sqlBuilder);

メソッド一覧

addSqlBuilder

public void addSqlBuilder(SqlBuilder sb)
SQLビルダー追加.
  • SQLとパラメーターを引き継ぐ。

パラメータ

名前 説明
sb SqlBuilder SQLビルダー

addQuery

public SqlBuilder addQuery(String sql, Object... params)
SQL&パラメーター追加.
  • パラメーター引数は省略可能で単一または複数で渡すことも可能です。
[例1] sqlBuilder.addQuery("AND a.user_id IS NOT NULL ");
[例2] sqlBuilder.addQuery("AND a.user_id = ? ", userId);
[例3] sqlBuilder.addQuery("AND ? <= a.birth_dt AND a.birth_dt <= ?", birthDtFrom, birthDtTo);

パラメータ

名前 説明
sql String SQL
params Object... パラメーター(複数可能)(省略可能)

戻り値

SqlBuilder - 自インスタンス

addParams

public SqlBuilder addParams(Object... params)
パラメーター追加.
  • 複数渡すことも可能です。
[例1] sqlBuilder.addParams(userId);
[例2] sqlBuilder.addParams(birthDtFrom, birthDtTo);

パラメータ

名前 説明
params Object... パラメーター(複数可能)

戻り値

SqlBuilder - 自インスタンス

addListInBind

public SqlBuilder addListInBind(List<Object> params)
カンマ区切りSQLバインド文字追加.
  • リスト内の要素数だけカンマ区切りでSQLバインド文字 "?" をSQLに追加します。
  • リスト内の要素数が 3 の場合は "?,?,?" がSQLに追加されます。
  • リスト内の値はSQLバインド文字パラメーターとして追加されます。
  • SQLバインド文字数が可変の IN句で使用する想定です。
[例]sqlBuilder.addQuery("AND type_cs IN (").addListInBind(list).addQuery(")");

パラメータ

名前 説明
params List<Object> パラメーターリスト

戻り値

SqlBuilder - 自インスタンス

addQueryIfNotBlankParameter

public SqlBuilder addQueryIfNotBlankParameter(String sql, Object param)
パラメーターが null以外かつブランク以外 の場合のみ SQLとパラメーターを追加.
  • パラメーターが null・ブランク以外の場合のみ SQLとパラメーターを追加します。
  • それ以外の仕様は #addQuery(String, Object...)と同じです。
  • 基本的には本メソッドのショートカット #addQnotB(String, Object) を使用してください。
下記例では userIdnull・ブランク以外の場合のみ SQLが追加されます。
[例] sqlBuilder.addQueryIfNotBlankParameter("AND user_id = ? ", userId);

パラメータ

名前 説明
sql String SQL
param Object パラメーター(単一のみ)

戻り値

SqlBuilder - 自インスタンス

addQnotB

public SqlBuilder addQnotB(String sql, Object param)
パラメーターが null以外かつブランク以外 の場合のみ SQLとパラメーターを追加.
  • #addQueryIfNotBlankParameter(String, Object) のショートカット。
  • パラメーターが null・ブランク以外の場合のみ SQLとパラメーターを追加します。
  • それ以外の仕様は #addQuery(String, Object...)と同じです。
下記例では userIdnull・ブランク以外の場合のみ SQLが追加されます。
[例] sqlBuilder.addQnotB("AND user_id = ? ", userId);

パラメータ

名前 説明
sql String SQL
param Object パラメーター(単一のみ)

戻り値

SqlBuilder - 自インスタンス

delLastChar

public SqlBuilder delLastChar()
最終SQL文字列削除.
  • SQL文字列の最終文字(1文字)を削除します。
[例]
for (final String key : params.keySet()) {
  sb.addQuery(key).addQuery("=?", params.get(key)).addQuery(",");
}
// 最後のカンマ削除
sb.deleteLastChar();

戻り値

SqlBuilder - 自インスタンス

delLastChar

public SqlBuilder delLastChar(int deleteCharCount)
最終SQL文字列削除.
  • SQL文字列の最後から指定文字数を削除します。
[例]
for (final String key : params.keySet()) {
  sb.addQuery(key).addQuery("=?", params.get(key)).addQuery(" AND ");
}
// 最後の AND 削除
sb.delLastChar(4);

パラメータ

名前 説明
deleteCharCount int 削除文字数

戻り値

SqlBuilder - 自インスタンス