ホームページ > データベース > mysql チュートリアル > Oracle を使用して MyBatis でバッチ アップサート (挿入/更新) を効率的に実行するにはどうすればよいですか?

Oracle を使用して MyBatis でバッチ アップサート (挿入/更新) を効率的に実行するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-12-29 04:09:10
オリジナル
918 人が閲覧しました

How to Efficiently Perform Batch Upserts (Insert/Update) in MyBatis with Oracle?

MyBatis for Oracle でのバッチ更新/更新 (挿入/更新)

コンテキスト:

MyBatis さん、可能性を処理しながら、Oracle データベースにオブジェクトのリストを挿入または更新する必要があります。重複します。現在のソリューションには手動ループと個別の挿入/更新操作が含まれており、非効率的です。

解決策:

プロセスを最適化するには、MyBatis のバッチ機能と Oracle のバッチ機能の使用を検討してください。 「マージ」機能。ただし、バッチ マージは MyBatis では直接サポートされていません。

推奨されるアプローチ:

バッチ更新/挿入を実行するには、次の手順を使用します。

  1. バッチ エグゼキュータを使用する: 以下を使用して、バッチ モードで MyBatis セッションを開きます。 ExecutorType.BATCH.
  2. レコードの反復: オブジェクトのリストをループします。
  3. 単一レコードの更新/挿入の呼び出し: オブジェクトごとに、マッパー上で適切な更新/挿入メソッドを呼び出します。これは単一のRecord.
  4. 変更のコミット: 最後に、セッション内で変更をコミットします。

例コード:

public void updateRecords(final List<GisObject> objectsToUpdate) {
    final SqlSession sqlSession = MyBatisUtils.getSqlSessionFactory().openSession(ExecutorType.BATCH);
    try {
        final GisObjectMapper mapper = sqlSession.getMapper(GisObjectMapper.class);
        for (final GisObject gisObject : objectsToUpdate) {
            mapper.updateRecord(gisObject);
        }
        sqlSession.commit();
    } finally {
        sqlSession.close();
    }
}
ログイン後にコピー

注:

マッパーの更新/挿入メソッドが単一レコード操作用に適切に構成されていることを確認してください。 foreach を使用したり、バッチ処理のために巨大な SQL ステートメントを生成したりすることはお勧めできません。

以上がOracle を使用して MyBatis でバッチ アップサート (挿入/更新) を効率的に実行するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート