現在、このアプリケーションはSpring、SimpleJdbcTemplate、MySQLを使用しています。
使用されるデータソースは、URLプロパティ「rewriteBatchedStatements=true」を持つorg.apache.commons.dbcp.BasicDataSourceです。
を使用したバッチ挿入中に、SimpleJdbcTemplate.batchUpdate(List<Object[]>)
入力バッチに(挿入しているテーブルの主キーに基づいて)重複するレコードがあります。
重複レコードのシナリオでは、次のことが可能です。
1)重複していないすべてのレコードを挿入し、成功した挿入の数に関する応答を取得しますか?
また
2)batchInsertを完全にロールバックします。レコードを挿入しないでください。
mysqlの「INSERTIGNORE」を使用して、最初の要件を部分的に達成することができます。ただし、SimpleJdbcTemplate.batchUpdate()
すべてのレコードが更新されたものとして返されます(重複を無視して、挿入されたレコード数のみをキャプチャすることはできません)
そして、2番目の要件を達成するには、「rewriteBatchedStatements」をオフにする必要があります。ただし、このパラメーターは、パフォーマンステスト後に微調整されています。したがって、これを「false」に設定することはできません。
最初の行で述べたように、使用しているコンポーネントの制約内で、上記の2つのケースのいずれかを達成することは可能ですか?
私は春とjdbcの世界に慣れていないので、詳細な説明が私たちをより良くするのに役立ちます。ありがとう