WEB开发网
开发学院软件开发Java Java 开发 2.0: NoSQL 阅读

Java 开发 2.0: NoSQL

 2010-07-20 00:00:00 来源:WEB开发网   
核心提示: 对应的 findAllByName与上述方法类似,但添加了一个参数,Java 开发 2.0: NoSQL(8),指定 您想要的实体个数,如清单 6 所示:清单 6. 通过名称找到全部实体staticdeffindAllByName(name,pagination=10){defquery=new

对应的 findAllByName与上述方法类似,但添加了一个参数,指定 您想要的实体个数,如清单 6 所示:

清单 6. 通过名称找到全部实体

 static def findAllByName(name, pagination=10){ 
 def query = new Query(Race.class.getSimpleName()) 
 query.addFilter("name", Query.FilterOperator.EQUAL, name) 
 def preparedQuery = this.datastore.prepare(query) 
 def entities = preparedQuery.asList(withLimit(pagination as int)) 
 return entities.collect { new Race(it as Entity) } 
 } 

与前面定义的查找程序类似,findAllByName通过名称找到 Race实例,但是它返回 所有 Race。顺便说一下,Groovy 的 collect方法非常灵活:它允许删除创建 Race实例的对应的循环。注意,Groovy 还支持方法参数的默认值;这样,如果我没有传入第 2 个值,pagination将拥有值 10。

清单 7. 查找程序的实际运行

 def nrace = Race.findByName("Charlottesville Marathon") 
 assert nrace.distance == 26.2 
 
 def races = Race.findAllByName("Charlottesville Marathon") 
 assert races.class == ArrayList.class 

清单 7中的查找程序按照既定的方式运行:findByName返回一个实例,而 findAllByName返回一个 Collection(假定有多个 “Charlottesville Marathon”)。

“参赛者” 对象没有太多不同

现在我已能够创建并找到 Race的实例,现在可以创建一个快速的 Runner对象了。这个过程与创建初始的 Race实例一样简单,只需如清单 8 所示扩展 Model:

上一页  3 4 5 6 7 8 9 10  下一页

Tags:Java 开发 NoSQL

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接