続・Google App Engineで1000件以上の大量データを取得する方法

きのうの記事で書いたやり方だと
元データが大量にあるとダメだった。
# 10万件中の真ん中10000件を取得したらエラー。。。

sinmetalがコメントで教えてくれたSlim3のS3QueryResultListで
カーソルを利用してクルクルまわしてみたら取れた!!
10万件全件のSelectはダメだったけど1万件ずつならいけそう。

int oneSelectNomber = 1000;
int loop = (10000 / oneSelectNomber) - 1;
S3QueryResultList resultL = Datastore.query(meta).filter(filters).offset(0).limit(oneSelectNomber).asQueryResultList();
boolean next = resultL.hasNext();
String cursor = resultL.getEncodedCursor();
String filter = resultL.getEncodedFilters();
for (int i = 0; i < loop; i++) {
if (!next) {
break;
}
S3QueryResultList appendList = Datastore.query(meta).encodedStartCursor(cursor).encodedFilters(filter).limit(oneSelectNomber).asQueryResultList();
next = appendList.hasNext();
cursor = appendList.getEncodedCursor();
resultL.addAll(appendList);
}

実践Webデザイン jQuery+CSSフレームワークでサクサクつくる「動き」と「仕掛け」