有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java我应该如何设计DAO层

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

  • 所有附件
  • 只有当前登录用户标记为收藏夹的存储模块
  • 仅限当前登录的用户对其发表评论的机柜

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

为了便于搜索特定机柜,所有三种模式都应支持通过关键字进行额外过滤(机柜名称中的全文搜索)。例如,用户应能够显示标记为收藏夹的所有机柜,这些机柜的名称中包含给定字符串。当然,列表可能仍然很大,分页也适用于这里

问题是-如何设计DAO层以避免代码重复和充满条件的意大利面代码此外,将代码划分为抽象层/区域也可以,这样,例如,构建最终SQL查询的代码就不会不一致地分散在不同抽象层的许多不同类中


共 (2) 个答案

  1. # 1 楼答案

    假设采用传统的请求/响应web应用程序样式,下面是一个示意图:

    在DAO的支持代码中将各种过滤选项表示为类。让web客户端指定表示过滤选项的URL参数。您需要一种方法来确保每次请求时总是发送过滤选项,或者将它们存储在用户的会话中

    将过滤参数映射到过滤选项,并将选项传递给DAO。在DAO的查询中,将过滤选项“扩展”到数据库的适当位置

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

    还有其他方法可以实现这一点(可能是使用现有的一百万个框架中的一个),但如果我必须从头开始开发,我会这样做

  2. # 2 楼答案

    编辑我的原始答案,因为我误读了你的标准。你的刀将和其他基本刀一样。对于这三个查询中的每一个,它(本质上)都有一个GET方法。如果用户希望在这之后缩小标准,我建议使用像DataTables.这样的jquery插件,假设DAO方法中返回的数据量不是惊人的巨大。该插件将允许您为每一列添加过滤器,并在键入时更新,还具有排序、搜索和分页功能