gpt4 book ai didi

java - 我应该如何设计我的 DAO 层

转载 作者:行者123 更新时间:2023-12-01 14:10:55 24 4
gpt4 key购买 nike

假设我想要一个代表动物园的网页。应该有一个附件列表(大约一万个),并且应该可以通过三种方式显示它:

  • 所有外壳,
  • 仅限当前登录用户标记为 Collection 的附件,
  • 仅当前登录用户评论过的附件。

在所有这些情况下,列表可能太长而无法放在单个页面上,因此应使用分页栏将其分为多个页面。

为了简化对特定附件的搜索,所有三种模式都应支持通过关键字进行附加过滤(附件名称中的全文搜索)。 IE。用户应该能够例如显示名称中包含给定字符串的所有标记为 Collection 夹的附件。当然,列表仍然可能很大,分页也适用于此。

问题是 - 如何设计 DAO 层以避免代码重复和充满条件的意大利面条代码?而且,将代码划分为抽象层/区域也很好,所以例如用于构建最终 SQL 查询的代码不会不一致地分散在来自不同抽象层的许多不同类中。

最佳答案

假设传统的请求/响应 Web 应用程序样式是一个草图:

将各种过滤选项表示为 DAO 支持代码中的类。让 Web 客户端指定表示过滤选项的 URL 参数。您需要一种方法来确保过滤选项始终在每个请求中发送,或将它们存储在用户的 session 中。

将过滤参数映射到过滤选项并将选项传递到您的 DAO。在您的 DAO 查询中,将过滤选项“扩展”到针对数据库的适当 where 子句中。

对于分页,有分页“窗口”的概念。例如,您可以有一个类来表示起始行和要返回的行数。再次将该类扩展为针对数据库执行的谓词。

还有其他方法可以实现这一目标(也许使用周围数百万个框架之一),但如果我必须从头开始开发它,这就是我的方法。

关于java - 我应该如何设计我的 DAO 层,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18537547/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com