低层次的API:

存储:

final Entity entity = new Entity(kind, ret, parent);
entity.setProperty(key, text);
datastoreService.put(entity);
 

删除:

final Key key = KeyFactory.createKey(parent, getName(), id);
datastoreService.delete(key);

更新:

final Entity entity = new Entity(kind, id, parent);
entity.setProperty(key, text);
datastoreService.put(entity);

查询by id:

final Key key = KeyFactory.createKey(parent, getName(), id);
final Entity entity = datastoreService.get(key);

查询by query:

final Query query = new Query(getName()); //kind
query.addSort(Keys.OBJECT_ID, Query.SortDirection.DESCENDING);
final PreparedQuery preparedQuery = getDatastoreService().prepare(query);

//限制返回大小
final QueryResultIterable<Entity> queryResultIterable =
 preparedQuery.asQueryResultIterable(FetchOptions.Builder.
 withLimit(num));

final List<JSONObject> ret = new ArrayList<JSONObject>();
for (final Entity entity : queryResultIterable) {
 final JSONObject comment = entity2JSONObject(entity);
 ret.add(comment);
}

查询by query:

final Query query = new Query(getName());
query.addSort(filter.getKey(), Query.SortDirection.DESCENDING);
Query.FilterOperator filterOperator = null;
filterOperator = Query.FilterOperator.EQUAL;
//第一个参数, 过滤的属性名, 第二个参数谓词, 第三个参数, 需要比较的值
query.addFilter(filter.getKey(), filterOperator, filter.getValue());

final PreparedQuery preparedQuery = datastoreService.prepare(query);
//计算符合查询条件的实体个数
final int count = preparedQuery.countEntities(FetchOptions.Builder.withDefaults());
final int pageCount =(int) Math.ceil((double) count / (double) pageSize);

//限制返回结果为pageSize个实体
//并且, 是从游标开始偏移offset个实体
final QueryResultList<Entity> queryResultList =
 preparedQuery.asQueryResultList(withOffset(offset).limit(pageSize));


posted on 2010-12-22 07:11  菊次郎  阅读(294)  评论(0)    收藏  举报