我的目标实际上是将数据库的所有数据转储到 XML 文件中。数据库不是很大,大约300MB。问题是我的内存限制只有 256MB(在 JVM 中)。所以很明显我不能把所有的东西都读入内存。
我设法使用 iBatis(是的,我的意思是 iBatis,而不是 myBatis)通过getList(... int skip, int max)
多次调用它来解决这个问题,并增加skip
. 这确实解决了我的记忆问题,但我对速度并不满意。变量名称表明该方法在后台执行的操作是读取整个结果集,然后跳过指定的记录。这对我来说听起来很多余(我并不是说这就是方法正在做的事情,我只是根据变量名猜测)。
现在,我为我的应用程序的下一个版本切换到 myBatis 3。我的问题是:有没有更好的方法在 myBatis 中逐块处理大量数据?无论如何要让 myBatis 处理前 N 条记录,将它们返回给调用者,同时保持结果集连接打开,这样下次用户调用 getList(...) 时,它将开始从 N+1 记录读取而不做任何事情“跳过”?