MyBatis for Oracle でのバッチ更新/更新 (挿入/更新)
コンテキスト:
MyBatis さん、可能性を処理しながら、Oracle データベースにオブジェクトのリストを挿入または更新する必要があります。重複します。現在のソリューションには手動ループと個別の挿入/更新操作が含まれており、非効率的です。
解決策:
プロセスを最適化するには、MyBatis のバッチ機能と Oracle のバッチ機能の使用を検討してください。 「マージ」機能。ただし、バッチ マージは MyBatis では直接サポートされていません。
推奨されるアプローチ:
バッチ更新/挿入を実行するには、次の手順を使用します。
例コード:
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 サイトの他の関連記事を参照してください。