パッケージ org.opengion.fukurou.db
クラス DBUpdater
java.lang.Object
org.opengion.fukurou.db.DBUpdater
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の使用有無を指定して、インスタンスを作成します。 -
メソッドの概要
-
コンストラクタの詳細
-
DBUpdater
PreparedStatement を指定して、インスタンスを作成します。 内部で、ParameterMetaData を作成して、sqlType を使用します。- パラメータ:
prmSize
- パラメータの個数pstmt
- PreparedStatementオブジェクト
-
DBUpdater
PreparedStatement を指定して、インスタンスを作成します。 内部で、ParameterMetaData を作成して、sqlType を使用します。- パラメータ:
prmSize
- パラメータの個数pstmt
- PreparedStatementオブジェクトusePMeta
- sqlType を使用するかどうか [true:使用する/false:使用しない]
-
DBUpdater
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
データ配列を渡して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
データ配列を渡して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
データの最後の処理を行います。 具体的には、executeBatch() で、所定のバッチ数に届いていない場合の処理です。- 戻り値:
- 更新件数
- 例外:
SQLException
- データベース処理で例外が発生した場合。
-
pstmtDataset
PreparedStatement にデータをセットする簡易メソッドです。 execute と、update で共通に使われる処理をまとめました。- パラメータ:
values
- ?に割り当てる設定値- 例外:
SQLException
- DB処理の実行に失敗した場合- 変更履歴:
- 8.5.6.1 (2024/03/29) execute と、update で共通に使われる処理をまとめる。
-