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

クラス DBUpdater

java.lang.Object
org.opengion.fukurou.db.DBUpdater

public final class DBUpdater extends Object
PreparedStatementを利用した更新処理を行う、簡易的なクラスです。 ParameterMetaDataの使用有無を指定することで、パラメータを処理する際に、 sqlType を使用するかどうかを指定します。 また、データ登録時のバッチサイズに基づいた処理を行っています。 execute(String[]) で、行ごとのパラメータデータを渡します。 一番最後に、execEnd() を呼ぶことで、更新件数を返します。 更新件数を取得しない場合でも、このメソッドを呼んでください。 このクラスは、マルチスレッドに対応していません。
導入されたバージョン:
JDK9.0,
  • コンストラクタの概要

    コンストラクタ
    コンストラクタ
    説明
    DBUpdater(int prmSize, PreparedStatement pstmt)
    PreparedStatement を指定して、インスタンスを作成します。
    DBUpdater(int prmSize, PreparedStatement pstmt, boolean usePMeta)
    PreparedStatement を指定して、インスタンスを作成します。
    DBUpdater(int prmSize, PreparedStatement pstmt, boolean usePMeta, boolean[] timeClms)
    PreparedStatementと、sqlTypeの使用有無を指定して、インスタンスを作成します。
    DBUpdater(int prmSize, PreparedStatement pstmt, boolean usePMeta, boolean[] timeClms, boolean useSelect)
    PreparedStatementと、sqlTypeの使用有無を指定して、インスタンスを作成します。
  • メソッドの概要

    修飾子とタイプ
    メソッド
    説明
    int
    データの最後の処理を行います。
    void
    execute(String[] values)
    データ配列を渡してPreparedStatementの引数に、値をセットします。
    void
    pstmtDataset(String[] values)
    PreparedStatement にデータをセットする簡易メソッドです。
    int
    update(String[] values)
    データ配列を渡してPreparedStatementの引数に、値をセットします。

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

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • コンストラクタの詳細

    • DBUpdater

      public DBUpdater(int prmSize, PreparedStatement pstmt)
      PreparedStatement を指定して、インスタンスを作成します。 内部で、ParameterMetaData を作成して、sqlType を使用します。
      パラメータ:
      prmSize - パラメータの個数
      pstmt - PreparedStatementオブジェクト
    • DBUpdater

      public DBUpdater(int prmSize, PreparedStatement pstmt, boolean usePMeta)
      PreparedStatement を指定して、インスタンスを作成します。 内部で、ParameterMetaData を作成して、sqlType を使用します。
      パラメータ:
      prmSize - パラメータの個数
      pstmt - PreparedStatementオブジェクト
      usePMeta - sqlType を使用するかどうか [true:使用する/false:使用しない]
    • DBUpdater

      public DBUpdater(int prmSize, PreparedStatement pstmt, boolean usePMeta, boolean[] timeClms)
      PreparedStatementと、sqlTypeの使用有無を指定して、インスタンスを作成します。 usePMetaは、内部で、ParameterMetaData を作成して、sqlType を使用するかどうかを 指定します。ORACLEのようなタイプの
      パラメータ:
      prmSize - パラメータの個数
      pstmt - PreparedStatementオブジェクト
      usePMeta - sqlType を使用するかどうか [true:使用する/false:使用しない]
      timeClms - sqlType を使用するかどうか [true:使用する/false:使用しない]
      変更履歴:
      7.4.1.0 (2021/04/23) sqlType="MERGE" 時のみ有効で、where 条件で存在すれば何もしない, 8.5.4.2 (2024/01/12) PMD 7.0.0 LinguisticNaming 対応
    • DBUpdater

      public DBUpdater(int prmSize, PreparedStatement pstmt, boolean usePMeta, boolean[] timeClms, boolean useSelect)
      PreparedStatementと、sqlTypeの使用有無を指定して、インスタンスを作成します。 usePMetaは、内部で、ParameterMetaData を作成して、sqlType を使用するかどうかを 指定します。ORACLEのようなタイプの
      パラメータ:
      prmSize - パラメータの個数
      pstmt - PreparedStatementオブジェクト
      usePMeta - sqlType を使用するかどうか [true:使用する/false:使用しない]
      timeClms - sqlType を使用するかどうか [true:使用する/false:使用しない]
      useSelect - true の場合は、UPDATE/INSERTではなく、SELECT します。
      変更履歴:
      7.2.9.1 (2020/10/23) isTimeのメソッドを統合します。, 7.4.1.0 (2021/04/23) sqlType="MERGE" 時のみ有効で、where 条件で存在すれば何もしない, 8.5.4.2 (2024/01/12) PMD 7.0.0 LinguisticNaming 対応
  • メソッドの詳細

    • execute

      public void execute(String[] values) throws SQLException
      データ配列を渡してPreparedStatementの引数に、値をセットします。 オラクル系の場合は、そのまま、setObject を行えば、自動変換しますが、 それ以外のDBでは、java.sql.Types を渡す必要があります。さらに、null 値も、setNullを使用します。 今は、pMeta が、null かどうかで、オラクル系か、どうかを判定するようにしています。 ※ このメソッドでは、useSelect は使いません。
      パラメータ:
      values - ?に割り当てる設定値
      例外:
      SQLException - DB処理の実行に失敗した場合
      変更履歴:
      7.2.9.1 (2020/10/23) isTimeのメソッドを統合します。, 7.4.1.0 (2021/04/23) sqlType="MERGE" 時のみ有効で、where 条件で存在すれば何もしない, 8.5.4.2 (2024/01/12) PMD 7.0.0 LinguisticNaming 対応, 8.5.6.1 (2024/03/29) execute と、update で共通に使われる処理をまとめる。
    • update

      public int update(String[] values) throws SQLException
      データ配列を渡してPreparedStatementの引数に、値をセットします。 useSelect=true の場合は、更新系ではなく検索系の処理を行います。 ここでは、マージ処理を考慮しているため、検索結果が、0件か、それ以上かのみ判定します。
      パラメータ:
      values - ?に割り当てる設定値
      戻り値:
      更新件数
      例外:
      SQLException - DB処理の実行に失敗した場合
      変更履歴:
      7.2.9.1 (2020/10/23) TableUpdateParamTag のマージ(UPDATE,INSERT)対応, 7.4.1.0 (2021/04/23) sqlType="MERGE" 時のみ有効で、where 条件で存在すれば何もしない, 8.5.6.1 (2024/03/29) execute と、update で共通に使われる処理をまとめる。
    • execEnd

      public int execEnd() throws SQLException
      データの最後の処理を行います。 具体的には、executeBatch() で、所定のバッチ数に届いていない場合の処理です。
      戻り値:
      更新件数
      例外:
      SQLException - データベース処理で例外が発生した場合。
    • pstmtDataset

      public void pstmtDataset(String[] values) throws SQLException
      PreparedStatement にデータをセットする簡易メソッドです。 execute と、update で共通に使われる処理をまとめました。
      パラメータ:
      values - ?に割り当てる設定値
      例外:
      SQLException - DB処理の実行に失敗した場合
      変更履歴:
      8.5.6.1 (2024/03/29) execute と、update で共通に使われる処理をまとめる。