パッケージ org.opengion.hayabusa.db

クラス AbstractQuery

java.lang.Object
org.opengion.hayabusa.db.AbstractQuery
すべての実装されたインタフェース:
Query
直系の既知のサブクラス:
Query_JDBC, Query_JDBCArrayCallable, Query_JDBCCallable, Query_JDBCErrMsg, Query_JDBCKeyEntry, Query_JDBCPLSQL, Query_JDBCPrepared, Query_JDBCTableMerge, Query_JDBCTableUpdate, Query_JDBCUpdate

public class AbstractQuery extends Object implements Query
Query インターフェースを継承した Query の実装クラスです。 クエリークラスにステートメントを与えて execute()することにより内部に DBTableModel を 作成します。 このクラスは、Abstract クラスのため、実装は個々のサブクラスで行います。 唯一実装する必要があるのは、execute() メソッドだけです。
機能分類
DB検索, DB登録
導入されたバージョン:
JDK5.0,
  • フィールドの概要

    フィールド
    修飾子とタイプ
    フィールド
    説明
    static final String
    内部オブジェクトタイプ名 "ARG_ARRAY"
    protected static final int
    StringBilderなどの初期値を設定します。
    protected static final String
    システムの改行コードを設定します。
    protected static final int
    6.9.3.0 (2018/03/26) データ検索時のフェッチサイズ 251
    protected static final int
    データ検索時の最大処理制限時間
    static final String
    内部オブジェクトタイプ名 "ERR_MSG"
    static final String
    内部オブジェクトタイプ名 "ERR_MSG_ARRAY"
    static final String
    内部オブジェクトタイプ名 "SYSARG_ARRAY"
  • コンストラクタの概要

    コンストラクタ
    修飾子
    コンストラクタ
    説明
    protected
    デフォルトコンストラクター
  • メソッドの概要

    修飾子とタイプ
    メソッド
    説明
    protected void
    ResultSet を DBTableModelに割り当てます。
    void
    execute(int[] rowNo, DBTableModel table)
    引数配列付のクエリーを実行します。
    void
    execute(String... args)
    引数配列付のクエリーを実行します。
    void
    execute(String[] keys, String... args)
    引数配列付のクエリーを実行します。
    void
    execute(String names, String dbArrayType, DBSysArg[] sysArg, DBUserArg[] userArg)
    引数配列付のクエリーを実行します。
    protected void
    Oracle関係のPL/SQLなどを処理する 共通メソッド これは、execute 処理の中でも、Oracle系 CallableStatement の共通処理部分です。
    protected Connection
    ConnectionFactory.connection( String ); を利用して、Connection オブジェクトを取り出します。
    実行結果の DBTableModel を返します。
    protected DBEditConfig
    編集設定オブジェクトを取得します。
    int
    エラーコード を取得します。
    エラーメッセージオブジェクト を取得します。
    int
    クエリーの実行結果を返します。
    int
    データベースの最大検索件数を返します。
    ステートメント文字列(UPDATE,INSERT,SELECT)を取り出します。
    int
    データベースの検索スキップ件数を返します。
    ステートメント文字列を取り出します。
    boolean
    アップデートフラグを取得します。
    void
    Connectionオブジェクトを外部から設定します。
    protected void
    DBTableModel をセットします。
    void
    編集設定オブジェクトをセットします。
    protected void
    setErrorCode(int cd)
    エラーコード をセットします。
    protected void
    エラーメッセージオブジェクト をセットします。
    protected void
    setExecuteCount(int executeCount)
    クエリーの実行結果件数をセットします。
    void
    setMaxRowCount(int maxRowCount)
    データベースの最大検索件数をセットします。
    void
    setMergeStatement(String update, String insert, String select)
    ステートメント文字列(UPDATE,INSERT)をセットします。
    void
    リソースマネージャーをセットします。
    void
    setSkipRowCount(int skipRowCount)
    データベースの検索スキップ件数をセットします。
    void
    ステートメント文字列をセットします。
    protected void
    setUpdateFlag(boolean up)
    アップデートフラグをセットします。
    オブジェクトの識別子として、最後のクエリーを返します。
    protected boolean
    この接続が、PreparedStatement#getParameterMetaData() を使用するかどうかを判定します。

    クラスから継承されたメソッド java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
  • フィールド詳細

  • コンストラクタの詳細

    • AbstractQuery

      protected AbstractQuery()
      デフォルトコンストラクター
      変更履歴:
      6.4.2.0 (2016/01/29) PMD refactoring. Each class should declare at least one constructor.
  • メソッドの詳細

    • setConnection

      public void setConnection(Connection conn)
      Connectionオブジェクトを外部から設定します。 通常は、Transaction と 接続先(DBID) を使用して作成した Connection を渡します。 このクラスでは、Connection の close() や、ConnectionFactory への返却なども 行いません。それらは、外部処理(通常は、Transactionオブジェクト)で行います。 Connection には、null は登録できません。
      定義:
      setConnection インタフェース内 Query
      パラメータ:
      conn - Connectionオブジェクト
      変更履歴:
      6.3.6.1 (2015/08/28) 新規追加
    • setStatement

      public void setStatement(String stmt)
      ステートメント文字列をセットします。
      定義:
      setStatement インタフェース内 Query
      パラメータ:
      stmt - ステートメント文字列
      変更履歴:
      3.1.1.0 (2003/03/28) 同期メソッド(synchronized付き)を非同期に変更する。
    • getStatement

      public String getStatement()
      ステートメント文字列を取り出します。
      定義:
      getStatement インタフェース内 Query
      戻り値:
      ステートメント文字列
    • setMergeStatement

      public void setMergeStatement(String update, String insert, String select)
      ステートメント文字列(UPDATE,INSERT)をセットします。
      定義:
      setMergeStatement インタフェース内 Query
      パラメータ:
      update - UPDATEステートメント文字列
      insert - INSERTステートメント文字列
      select - SELECTステートメント文字列(あれば何もしない、なければINSERT処理の判定用)
      変更履歴:
      7.2.9.1 (2020/10/23) TableUpdateParamTag のマージ(UPDATE,INSERT)対応, 7.4.1.0 (2021/04/23) sqlType="MERGE" 時のみ有効で、where 条件で存在すれば何もしない
    • getMergeStatement

      ステートメント文字列(UPDATE,INSERT,SELECT)を取り出します。
      定義:
      getMergeStatement インタフェース内 Query
      戻り値:
      ステートメント文字列の配列(UPDATE,INSERTの順番)
      変更履歴:
      7.2.9.1 (2020/10/23) TableUpdateParamTag のマージ(UPDATE,INSERT)対応, 7.2.9.3 (2020/11/06) 早い段階でエラーにしておきます。, 7.4.1.0 (2021/04/23) sqlType="MERGE" 時のみ有効で、where 条件で存在すれば何もしない
    • execute

      public void execute(String... args)
      引数配列付のクエリーを実行します。 処理自体は、#execute() と同様に、各サブクラスの実装に依存します。 これは、PreparedQuery で使用する引数を配列でセットするものです。 select * from emp where deptno = ? and job = ? などの PreparedQuery や { call xxxx( ?,?,? ) } などの CallableStatement の ? 部分の引数を 順番にセットしていきます。 ※ このクラスでは実装されていません。
      定義:
      execute インタフェース内 Query
      パラメータ:
      args - オブジェクトの引数配列(可変長引数)
      変更履歴:
      6.1.1.0 (2015/01/17) 引数配列を可変引数にして、execute() を含めて定義します。
    • execute

      public void execute(String[] keys, String... args)
      引数配列付のクエリーを実行します。 処理自体は、#execute() と同様に、各サブクラスの実装に依存します。 これは、PreparedQuery で使用する引数を配列でセットするものです。 select * from emp where deptno = ? and job = ? などの PreparedQuery の ? 部分の引数を 順番にセットしていきます。 ※ このクラスでは実装されていません。
      定義:
      execute インタフェース内 Query
      パラメータ:
      keys - オブジェクトのキー配列
      args - オブジェクトの引数配列(可変長引数)
      変更履歴:
      4.0.0.0 (2005/01/31) 新規追加
    • execute

      public void execute(String names, String dbArrayType, DBSysArg[] sysArg, DBUserArg[] userArg)
      引数配列付のクエリーを実行します。 処理自体は、#execute() と同様に、各サブクラスの実装に依存します。 これは、PreparedQuery で使用する引数を配列でセットするものです。 select * from emp where deptno = ? and job = ? などの PreparedQuery の ? 部分の引数を 順番にセットしていきます。 ※ このクラスでは実装されていません。
      定義:
      execute インタフェース内 Query
      パラメータ:
      names - カラム名(CSV形式)
      dbArrayType - アレイタイプ名称
      sysArg - DBSysArg配列
      userArg - DBUserArg配列
      変更履歴:
      4.0.0.0 (2005/01/31) 引数をすべて受け取って実行するメソッドを標準メソッドとして追加
    • execute

      public void execute(int[] rowNo, DBTableModel table)
      引数配列付のクエリーを実行します。 処理自体は、#execute() と同様に、各サブクラスの実装に依存します。 これは、PreparedQuery で使用する引数を配列でセットするものです。 select * from emp where deptno = ? and job = ? などの PreparedQuery の [カラム名] 部分の引数を、DBTableModelから順番にセットしていきます。 ※ このクラスでは実装されていません。
      定義:
      execute インタフェース内 Query
      パラメータ:
      rowNo - 選択された行番号配列(登録する対象行)
      table - DBTableModelオブジェクト(登録する元データ)
    • execute

      protected void execute(ExceptionBiConsumer<CallableStatement,Connection> biConsumer, String clsName)
      Oracle関係のPL/SQLなどを処理する 共通メソッド これは、execute 処理の中でも、Oracle系 CallableStatement の共通処理部分です。 引数の ExceptionBiConsumer で、各サブクラスの個別のパラメータ設定処理を行います。
      パラメータ:
      biConsumer - CallableStatementとConnectionを受け取って結果を返さない関数型インタフェース
      clsName - エラーメッセージ生成時のサブクラス名
      変更履歴:
      8.5.6.1 (2024/03/29) Oracle関係のPL/SQLなどを処理する
    • setExecuteCount

      protected void setExecuteCount(int executeCount)
      クエリーの実行結果件数をセットします。 初期値は -1 です。(クエリーが失敗した場合や、CallableStatement の呼び出し等で 実行件数が明確でない場合の戻り値)。
      パラメータ:
      executeCount - 実行結果件数
      変更履歴:
      3.1.1.0 (2003/03/28) 同期メソッド(synchronized付き)を非同期に変更する。
    • getExecuteCount

      public int getExecuteCount()
      クエリーの実行結果を返します。 クエリーが失敗した場合や、CallableStatement の呼び出し等で実行件数が明確でない 場合は、-1 が返されます。
      定義:
      getExecuteCount インタフェース内 Query
      戻り値:
      実行結果件数
    • setDBTableModel

      protected void setDBTableModel(DBTableModel table)
      DBTableModel をセットします。 なお、検索系実行前に setDBTableModel() でテーブルをセットしていたとしても そのオブジェクトは破棄されて、新しい DBTableModel が生成されます。
      パラメータ:
      table - DBTableModelオブジェクト
      変更履歴:
      3.1.1.0 (2003/03/28) 同期メソッド(synchronized付き)を非同期に変更する。
    • getDBTableModel

      実行結果の DBTableModel を返します。
      定義:
      getDBTableModel インタフェース内 Query
      戻り値:
      DBTableModelオブジェクト
    • getMaxRowCount

      public int getMaxRowCount()
      データベースの最大検索件数を返します。 (初期値:DB_MAX_ROW_COUNT[=])。 データベース自体の検索は、指定されたSQLの全件を検索しますが、 DBTableModelのデータとして登録する最大件数をこの値に設定します。0は無制限です。 サーバーのメモリ資源と応答時間の確保の為です。
      定義:
      getMaxRowCount インタフェース内 Query
      戻り値:
      最大検索件数
    • setMaxRowCount

      public void setMaxRowCount(int maxRowCount)
      データベースの最大検索件数をセットします。 データベース自体の検索は、指定されたSQLの全件を検索しますが、 DBTableModelのデータとして登録する最大件数をこの値に設定します。 サーバーのメモリ資源と応答時間の確保の為です。 ゼロ、または、負の値を設定すると、無制限(Integer.MAX_VALUE)になります。
      定義:
      setMaxRowCount インタフェース内 Query
      パラメータ:
      maxRowCount - 最大検索件数
      変更履歴:
      3.1.1.0 (2003/03/28) 同期メソッド(synchronized付き)を非同期に変更する。, 4.0.0.0 (2005/08/31) ゼロ、または、負の値は、無制限(Integer.MAX_VALUE)にする。
    • getSkipRowCount

      public int getSkipRowCount()
      データベースの検索スキップ件数を返します。 データベース自体の検索は、指定されたSQLの全件を検索しますが、 DBTableModelのデータとしては、スキップ件数分は登録されません。 サーバーのメモリ資源と応答時間の確保の為です。
      定義:
      getSkipRowCount インタフェース内 Query
      戻り値:
      最大検索件数
    • setSkipRowCount

      public void setSkipRowCount(int skipRowCount)
      データベースの検索スキップ件数をセットします。 データベース自体の検索は、指定されたSQLの全件を検索しますが、 DBTableModelのデータとしては、スキップ件数分は登録されません。 サーバーのメモリ資源と応答時間の確保の為です。
      定義:
      setSkipRowCount インタフェース内 Query
      パラメータ:
      skipRowCount - スキップ件数
      変更履歴:
      3.1.1.0 (2003/03/28) 同期メソッド(synchronized付き)を非同期に変更する。
    • setUpdateFlag

      protected void setUpdateFlag(boolean up)
      アップデートフラグをセットします。 これは、Query で更新処理の SQL 文を実行したときにセットされます。 更新処理が実行:true / 検索処理のみ:false をセットします。 このメソッドを呼び出さない場合は、デフォルト:true です。
      パラメータ:
      up - アップデートされたかどうか[true:更新処理/false:検索処理]
      変更履歴:
      2.1.2.3 (2002/12/02) データベース更新時に、更新フラグをセットするように変更, 3.1.1.0 (2003/03/28) 同期メソッド(synchronized付き)を非同期に変更する。
    • isUpdate

      public boolean isUpdate()
      アップデートフラグを取得します。 これは、Query で更新処理の SQL 文を実行したときに true にセットされます。 更新処理が実行:true / 検索処理のみ:false を取得できます。
      定義:
      isUpdate インタフェース内 Query
      戻り値:
      アップデートされたかどうか[true:更新処理/false:検索処理]
      変更履歴:
      2.1.2.3 (2002/12/02) データベース更新時に、更新フラグをセットするように変更, 4.0.0.0 (2007/07/20) メソッド名変更( getUpdateFlag() ⇒ isUpdate() )
    • setResourceManager

      public void setResourceManager(ResourceManager resource)
      リソースマネージャーをセットします。 これは、言語(ロケール)に応じた DBColumn をあらかじめ設定しておく為に 必要です。 リソースマネージャーが設定されていない、または、所定のキーの DBColumn が リソースに存在しない場合は、内部で DBColumn オブジェクトを作成します。
      定義:
      setResourceManager インタフェース内 Query
      パラメータ:
      resource - リソースマネージャー
      変更履歴:
      4.0.0.0 (2005/01/31) lang ⇒ ResourceManager へ変更
    • getErrorCode

      public int getErrorCode()
      エラーコード を取得します。 エラーコード は、ErrorMessage クラスで規定されているコードです。
      定義:
      getErrorCode インタフェース内 Query
      戻り値:
      エラーコード
    • setErrorCode

      protected void setErrorCode(int cd)
      エラーコード をセットします。 エラーコード は、ErrorMessage クラスで規定されているコードです。
      パラメータ:
      cd - エラーコード
    • getErrorMessage

      エラーメッセージオブジェクト を取得します。
      定義:
      getErrorMessage インタフェース内 Query
      戻り値:
      エラーメッセージオブジェクト
    • setErrorMessage

      protected void setErrorMessage(ErrorMessage em)
      エラーメッセージオブジェクト をセットします。
      パラメータ:
      em - エラーメッセージオブジェクト
    • setEditConfig

      public void setEditConfig(DBEditConfig config)
      編集設定オブジェクトをセットします。
      定義:
      setEditConfig インタフェース内 Query
      パラメータ:
      config - 編集設定オブジェクト
      変更履歴:
      5.3.6.0 (2011/06/01) 新規追加
    • getEditConfig

      編集設定オブジェクトを取得します。
      戻り値:
      編集設定オブジェクト
      変更履歴:
      5.3.6.0 (2011/06/01) 新規追加
    • createTableModel

      protected void createTableModel(ResultSet resultSet)
      ResultSet を DBTableModelに割り当てます。 毎回、検索毎に DBTableModel にコピーするイメージです。 ResulSet 以外のオブジェクトから、DBTableModelを作成する場合は、 このメソッドをオーバーライドします。 このメソッドは、execute からのみ呼び出されます。 それ以外からは呼出し出来ません。
      パラメータ:
      resultSet - ResultSetオブジェクト
      変更履歴:
      3.1.1.0 (2003/03/28) 同期メソッド(synchronized付き)を非同期に変更する。, 3.3.3.3 (2003/08/06) カラムのラベル名を、大文字に変換する。, 3.8.5.0 (2006/03/02) CLOB カラムかどうかを判定しCLOBの場合は、Clob オブジェクトから文字列を取り出します。, 3.8.8.8 (2007/05/11) ROWID対応(小数点対応 "0.3" が ".3" と表示される対策), 4.0.0.0 (2006/01/31) CLOB カラムかどうかを判定しCLOBの場合は、ストリームから値を取り出します。, 5.3.6.0 (2011/06/01) DBTableModel作成処理をDBTableModelUtilに移動&集計機能対応, 6.3.6.1 (2015/08/28) close(),realClose() 廃止。Queryはキャッシュしません。
    • getConnection

      ConnectionFactory.connection( String ); を利用して、Connection オブジェクトを取り出します。 コネクションプールが一杯の場合は、即エラーになります。
      戻り値:
      コネクション
      変更履歴:
      3.1.1.0 (2003/03/28) 同期メソッド(synchronized付き)を非同期に変更する。, 3.8.7.0 (2006/12/15) アクセスログ取得の為、ApplicationInfoオブジェクトを設定, 5.1.9.0 (2010/08/01) transaction 属性追加。, 6.3.6.1 (2015/08/28) transaction 属性廃止。内部のConnectionを返します。
    • useParameterMetaData

      protected boolean useParameterMetaData()
      この接続が、PreparedStatement#getParameterMetaData() を使用するかどうかを判定します。 ConnectionFactory#useParameterMetaData(String) の結果を返します。(postgreSQL対応) ※ 暫定処理です。もっと、良い方法を考える必要があります。
      戻り値:
      使用する場合:true / その他:false
      関連項目:
      変更履歴:
      5.3.8.0 (2011/08/01) 新規追加, 6.3.6.1 (2015/08/28) 内部変数にconnIDが無くなったため、直接所得することになりました。, 6.4.2.0 (2016/01/29) ex.printStackTrace() を、ThrowUtil#ogStackTrace(Throwable) に置き換え。
    • toString

      public String toString()
      オブジェクトの識別子として、最後のクエリーを返します。
      オーバーライド:
      toString クラス内 Object
      戻り値:
      最後のクエリー
      このメソッドは、nullを返しません