我是新人。我正在为激光标记场所编写一个应用程序,在那里我们有很多年龄段的 child 来互相射击光束。我们正在制作一个高分屏幕,它将显示当天、一周和本月的最佳分数。我们的想法是,人们会为上榜而感到自豪,并且每月还会有一次奖励。
我陷入了按日期过滤的整个过程中。
我基本上修改了经典的留言簿示例,以便我可以添加分数和客户信息,并按分数对它们进行排序。
Key guestbookKey = KeyFactory.createKey("Guestbook", guestbookName);
String fornavn = req.getParameter("fornavn");
Integer score = Integer.parseInt(req.getParameter("score"));
String email = req.getParameter("email");
String tlf = req.getParameter("tlf");
Date date = new Date();
Entity highscore = new Entity("Greeting", guestbookKey);
highscore.setProperty("date", date);
highscore.setProperty("fornavn", fornavn);
highscore.setProperty("score", score);
highscore.setProperty("email", email);
highscore.setProperty("tlf", tlf);
DatastoreService datastore = DatastoreServiceFactory.getDatastoreService();
datastore.put(highscore);
在 jsp 中,有一个查询可以获取整体前 5 名。
Query query = new Query("Highscore", highscoreKey).addSort("score", Query.SortDirection.DESCENDING);
List<Entity> greetings = datastore.prepare(query).asList(FetchOptions.Builder.withLimit(5));
还有一个表单将用户输入发送到 .java。关于如何设置日期有什么建议吗?保存第 # 周和第 # 月并据此进行查询?看起来很麻烦。
最佳答案
据我所知,您的“HighScore”类型实际上是一种跟踪所有分数的“Score”类型。
与其查询周/月的高分,您可能最好拥有一个 HighScore 实体(与正常的“分数”实体分开),每当您输入分数时就更新该实体。每次输入新分数时,检查是否应更新高分。
您永远不需要花哨的查询,您只需要获取高分实体。
或者您可能想要每月/每周等有一个单独的高分实体,以便您可以跟踪历史记录。在这种情况下,您可能需要将周或月编码到实体键中,以便您可以轻松获取当前周/月的 HighScore。
关于java - 查询今天、一周内、一个月内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17553962/