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

クラス DBUpdater


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

      コンストラクタ 
      コンストラクタ 説明
      DBUpdater​(int prmSize, PreparedStatement pstmt)
      PreparedStatement を指定して、インスタンスを作成します。
      DBUpdater​(int prmSize, PreparedStatement pstmt, boolean usePMeta)
      PreparedStatement を指定して、インスタンスを作成します。
      DBUpdater​(int prmSize, PreparedStatement pstmt, boolean usePMeta, boolean[] isTime)
      PreparedStatementと、sqlTypeの使用有無を指定して、インスタンスを作成します。
      DBUpdater​(int prmSize, PreparedStatement pstmt, boolean usePMeta, boolean[] isTime, boolean useSelect)
      PreparedStatementと、sqlTypeの使用有無を指定して、インスタンスを作成します。
    • コンストラクタの詳細

      • 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[] isTime)
        PreparedStatementと、sqlTypeの使用有無を指定して、インスタンスを作成します。 usePMetaは、内部で、ParameterMetaData を作成して、sqlType を使用するかどうかを 指定します。ORACLEのようなタイプの
        パラメータ:
        prmSize - パラメータの個数
        pstmt - PreparedStatementオブジェクト
        usePMeta - sqlType を使用するかどうか [true:使用する/false:使用しない]
        isTime - sqlType を使用するかどうか [true:使用する/false:使用しない]
        変更履歴:
        7.4.1.0 (2021/04/23) sqlType="MERGE" 時のみ有効で、where 条件で存在すれば何もしない
      • DBUpdater

        public DBUpdater​(int prmSize,
                         PreparedStatement pstmt,
                         boolean usePMeta,
                         boolean[] isTime,
                         boolean useSelect)
        PreparedStatementと、sqlTypeの使用有無を指定して、インスタンスを作成します。 usePMetaは、内部で、ParameterMetaData を作成して、sqlType を使用するかどうかを 指定します。ORACLEのようなタイプの
        パラメータ:
        prmSize - パラメータの個数
        pstmt - PreparedStatementオブジェクト
        usePMeta - sqlType を使用するかどうか [true:使用する/false:使用しない]
        isTime - 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 条件で存在すれば何もしない
    • メソッドの詳細

      • 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 条件で存在すれば何もしない
      • 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 条件で存在すれば何もしない
      • execEnd

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