私の目標は、実際にはデータベースのすべてのデータをXMLファイルにダンプすることです。データベースはそれほど大きくはない、それは約300MBだ。問題は、256MBのメモリ制限(JVM内)のみです。だから明らかに私はすべてをメモリに読み込むことはできません。MyBatisで非常に大量のデータを扱う
私はこの問題を、getList(... int skip, int max)
と呼んで、iBatis(iBatisではmyBatisではありません)を複数回使用して解決しました。増分はskip
です。それは私の記憶上の問題を解決しますが、私は速度に感心しません。変数名は、フードの中でメソッドが何をするかは、result-setスキップしてから指定されたレコード全体を読み取ることを示しています。これは私にとってかなり冗長に思えます(私はそれがメソッドがやっていることではありません、私は変数名の基底を推測しています)。
私のアプリケーションの次のバージョンでmyBatis 3に切り替えました。私の質問は、myBatisで大量のデータチャンクをチャンクで処理する方法はありますか?とにかくmyBatisを最初のN個のレコードに処理し、結果セットの接続を開いたままで呼び出し元に戻します。次回ユーザーがgetList(...)を呼び出すと、何もせずにN + 1レコードからの読み取りを開始します「スキップする」?
あなたの答えは重要ではありません。@Options(fetchSize = Integer.MIN_VALUE)(またはXMLに相当するもの)をステートメントに追加する必要があります。 MyBatis 3.0.5では動作しませんでした(Eclipse Memory Analyzerで調べました)。 MyBatis 3.1.1にアップグレードしたところ、ストリーミングは正常に動作しました。 –