使用 JDBC 实现迭代器设计模式

2024-03-18

我正在解决以下问题:

迭代器设计模式是一种封装性很强的设计模式。举个例子;图书馆需要一个图书管理系统。一堂课为books 存储他们的详细信息和一个类library存储书籍和书架编号。假设图书馆希望使用以下方式将数据存储在数据库中JDBC.

如何使用 JDBC 实现迭代器设计模式以确保数据的封装?

我关心的是数据库的处理位置以及数据如何在应用程序之间共享。

数据库处理程序可以是库类的内部类吗?那么是否可以保存数据并根据请求检索数据而不影响封装?

我还在学习,还有很长的路要走,所以要温柔:)


这是关于使用迭代器模式访问数据库的近似。

package tk.ezequielantunez.stackoverflow.examples;

import java.util.Collection;
import java.util.Iterator;

/**
 * Paged implementatios of a DAO. Iterator interface is used.
 * Nottice you get pages of Collections, where resides your data.
 * @author Ezequiel
 */
public class DAOIterator implements Iterator<Collection> {

    int actualPage;
    int pageSize;

    public DAOIterator(int pageSize) {
        this.actualPage = 0;
        this.pageSize = pageSize;
    }

    /**
     * Indicates if you have more pages of datga.
     */
    @Override
    public boolean hasNext() {
        return actualPage < getTotalPages();
    }

    /**
     * Gets the next page of data.
     */
    @Override
    public Collection next() {
        return getPage(++actualPage);
    }

    @Override
    public void remove() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    /**
     * Calculates total number of pages.
     */
    private int getTotalPages() {
        /* You could do a count of total results and divide them by pageSize */
        throw new UnsupportedOperationException("Not supported yet.");
    }

    /**
     * Get a page of results with X objects, where X is the pageSize used in
     * constructor.
     */
    private Collection getPage(int page) {
        /* Get data from database here */
        throw new UnsupportedOperationException("Not supported yet.");
    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 JDBC 实现迭代器设计模式 的相关文章

  • 不同帐户上的 Spring Boot、JmsListener 和 SQS 队列

    我正在尝试开发一个 Spring Boot 1 5 应用程序 该应用程序需要侦听来自两个不同 AWS 帐户的 SQS 队列 是否可以使用 JmsListener 注解创建监听器 我已检查权限是否正确 我可以使用 getQueueUrl 获取
  • Mockito:如何通过模拟测试我的服务?

    我是模拟测试新手 我想测试我的服务方法CorrectionService correctPerson Long personId 实现尚未编写 但这就是它将执行的操作 CorrectionService将调用一个方法AddressDAO这将
  • 如何循环遍历所有组合,例如48 选择 5 [重复]

    这个问题在这里已经有答案了 可能的重复 如何在java中从大小为n的集合中迭代生成k个元素子集 https stackoverflow com questions 4504974 how to iteratively generate k
  • 动态选择端口号?

    在 Java 中 我需要获取端口号以在同一程序的多个实例之间进行通信 现在 我可以简单地选择一些固定的数字并使用它 但我想知道是否有一种方法可以动态选择端口号 这样我就不必打扰我的用户设置端口号 这是我的一个想法 其工作原理如下 有一个固定
  • 什么是时序数据库?

    What is 时间序列数据库例如InfluxDB 我应该何时 何地使用它 请给我它的业务场景示例 检查wiki https en wikipedia org wiki Time series database 时间序列数据库 TSDB 是
  • 如何在 Spring 中禁用使用 @Component 注释创建 bean?

    我的项目中有一些用于重构逻辑的通用接口 它看起来大约是这样的 public interface RefactorAwareEntryPoint default boolean doRefactor if EventLogService wa
  • jQuery AJAX 调用 Java 方法

    使用 jQuery AJAX 我们可以调用特定的 JAVA 方法 例如从 Action 类 该 Java 方法返回的数据将用于填充一些 HTML 代码 请告诉我是否可以使用 jQuery 轻松完成此操作 就像在 DWR 中一样 此外 对于
  • 谷歌应用程序引擎会话

    什么是java应用程序引擎 默认会话超时 如果我们将会话超时设置为非常非常长的时间 会不会产生不良影响 因为谷歌应用程序引擎会话默认情况下仅存储在数据存储中 就像facebook一样 每次访问该页面时 会话仍然永远存在 默认会话超时设置为
  • Java 集合的并集或交集

    建立并集或交集的最简单方法是什么Set在 Java 中 我见过这个简单问题的一些奇怪的解决方案 例如手动迭代这两个集合 最简单的单行解决方案是这样的 set1 addAll set2 Union set1 retainAll set2 In
  • 无法创建请求的服务[org.hibernate.engine.jdbc.env.spi.JdbcEnvironment]-MySQL

    我是 Hibernate 的新手 我目前正在使用 Spring boot 框架并尝试通过 hibernate 创建数据库表 我知道以前也问过同样的问题 但我似乎无法根据我的环境找出如何修复错误 休眠配置文件
  • jdbc mysql loginTimeout 不起作用

    有人可以解释一下为什么下面的程序在 3 秒后超时 因为我将其设置为在 3 秒后超时 12秒 我特意关闭了mysql服务器来测试mysql服务器无法访问的这种场景 import java sql Connection import java
  • 如何在用户输入数据后重新运行java代码

    嘿 我有一个基本的java 应用程序 显示人们是成年人还是青少年等 我从java开始 在用户输入年龄和字符串后我找不到如何制作它它们被归类为 我希望它重新运行整个过程 以便其他人可以尝试 的节目 我一直在考虑做一个循环 但这对我来说没有用
  • 如何使用 jUnit 将测试用例添加到套件中?

    我有 2 个测试类 都扩展了TestCase 每个类都包含一堆针对我的程序运行的单独测试 如何将这两个类 以及它们拥有的所有测试 作为同一套件的一部分执行 我正在使用 jUnit 4 8 在 jUnit4 中你有这样的东西 RunWith
  • Android:无法使用 DbHelper 和 Contract 类将数据插入 SQLite

    public class Main2Activity extends AppCompatActivity private EditText editText1 editText2 editText3 editText4 private Bu
  • 找不到符号 NOTIFICATION_SERVICE?

    package com test app import android app Notification import android app NotificationManager import android app PendingIn
  • 如何使用mockito模拟构建器

    我有一个建造者 class Builder private String name private String address public Builder setName String name this name name retur
  • 包 javax.el 不存在

    我正在使用 jre6 eclipse 并导入 javax el 错误 包 javax el 不存在 javac 导入 javax el 过来 这不应该是java的一部分吗 谁能告诉我为什么会这样 谢谢 米 EL 统一表达语言 是 Java
  • 在java中为组合框分配键

    我想添加一个JComboBox在 Swing 中这很简单 但我想为组合中的每个项目分配值 我有以下代码 JComboBox jc1 new JComboBox jc1 addItem a jc1 addItem b jc1 addItem
  • 使用 CXF-RS 组件时,为什么我们使用 而不是普通的

    作为后续这个问题 https stackoverflow com questions 20598199 对于如何正确使用CXF RS组件我还是有点困惑 我很困惑为什么我们需要
  • Spring Boot 无法更新 azure cosmos db(MongoDb) 上的分片集合

    我的数据库中存在一个集合 documentDev 其分片键为 dNumber 样本文件 id 12831221wadaee23 dNumber 115 processed false 如果我尝试使用以下命令通过任何查询工具更新此文档 db

随机推荐

  • MYSQL:如何创建一个触发器来根据不同表中的值计算字段值?

    In table A我有田地CENA 价格 cena za kus 每件价格 mnozstvi 数量 In table B我有田地DPH vat 我想添加一个更新 插入之前触发器 它将计算PRICE字段 像这样 price price pe
  • 如何从 HSSFWorkbook 对象获取输入流

    我希望我的 Web 应用程序用户将一些数据下载为 Excel 文件 我有下一个函数在响应对象中发送输入流 public static void sendFile InputStream is HttpServletResponse resp
  • 如何在 jQuery/Javascript 中编写 switch 语句来测试元素是否具有特定类?

    这是我正在使用的 if else 语句的结构 myclass a click function if this hasClass class1 do something else if this hasClass class2 do som
  • ASP.NET MVC 模型绑定器。使用对象数组参数调用控制器

    我想要 MVC 控制器的以下签名 public ActionResult Create Persons p 有可能有这样的东西吗 编辑 假设我想通过提交由特殊符号分隔的名称列表来获取人员对象数组 例如我提交一个表格
  • 使用 C# 从字符串路径构建文件夹/文件树[重复]

    这个问题在这里已经有答案了 我需要解决一个涉及从字符串路径构建树的问题 以下是模型 public class Folder public string Name get set public List
  • Hibernate 4.0.1 至 4.3.5:无法建立 JDBC 连接

    我有一个使用 Hibernate 4 0 1 与 derby 数据库交互的项目 效果很好 这是一个示例程序 它仅连接到数据库并且不执行任何操作 import org hibernate Session import org hibernat
  • 委托给私有部分

    有时 C 的隐私概念让我感到困惑 class Foo struct Bar Bar p public Bar operator gt const return p struct Foo Bar void baz std cout lt lt
  • 是否可以用 angular2 注入接口?

    我想知道 Angular2 中是否有正确的方法来注入接口 参见下文 我认为这与界面上缺少 Injectable 装饰器有关 但似乎这是不允许的 Regards 当 CoursesServiceInterface 作为接口实现时 TypeSc
  • 如何避免控制台窗口包含包含 os.system 调用的 .pyw 文件?

    如果我将代码文件另存为 pyw 没有出现控制台窗口 这就是我想要的 但如果代码包含对os system 我仍然看到一个讨厌的控制台窗口 我认为这是由调用引起的os system 有没有办法从我的内部执行其他文件 pyw脚本根本不升起控制台窗
  • scala 日志记录函数名称

    在我的日志条目中 我想记录调用 log 方法的函数名称 这是为了能够自动按函数名称过滤日志条目 这可能吗 有任何图书馆吗 对现有库有任何扩展吗 换句话说 是否可以在运行时提取执行上下文当前正在执行的scala函数的名称 第二个问题 我知道这
  • CImg 库在旋转时创建扭曲的图像

    我想使用 CImg 库 http cimg sourceforge net http cimg sourceforge net 以任意角度旋转图像 图像由 Qt 读取 不应执行旋转 QImage img sample with alpha
  • Unix 查找:多种文件类型

    我想对多种文件类型运行 find name 例如 find name h cpp 这可能吗 find name h o name cpp 要在以下位置找到此信息man页面 类型man find并通过键入搜索运算符 OPERATORS并按回车
  • Apache James Spring 发行版未启动

    尝试一下阿帕奇 詹姆斯 https james apache org 目前的邮件服务器 我下载后当前二进制发行版 3 4 0 https www apache org dyn closer lua james server 3 4 0 ja
  • ANTLR @header、@parser、superClass 选项和基本文件 io (Java)

    我想将解析器操作与基本文件 io Java 一起使用 例如 G ANTLR 语法中的 PrintWriter 我必须使用 superClass 选项还是可以使用 header 在这两种情况下 我如何声明 PrintWriter 对象以及如何
  • Scala 中的类型 - 下界

    在下面的代码上 我的期望是T必须是 a 类型B or A 所以请致电lowerBound new D 可能不应该编译 类似的上限实验给了我预期的类型检查错误 感谢您提供提示 object varianceCheck class A over
  • 修复了 Octave urlread 导致无法使用给定 CA 证书对对等证书进行身份验证的问题

    Question 如何修复 不是解决方法 Octave 假设 libcurl 与 Octave 捆绑 urlread 导致无法使用给定的 CA 证书对对等证书进行身份验证 读过pkg 在 Windows 中从 forge 安装 http o
  • 通过命令行连接到 smtp.gmail.com

    我正在编写一个通过有效的 GMail 用户 ID 和密码发送邮件的应用程序 我只是想在 Windows XP 命令行上模拟 SMTP 连接 当我远程登录时smtp gmail com在 465 端口 我没有看到任何东西 带标题的空白命令窗口
  • PHPWord 导出给出损坏的 Word 文件

    我使用了 PHPWord 网站上的示例代码 http phpword codeplex com documentation http phpword codeplex com documentation当我尝试使用 Word 打开它时 出现
  • Laravel Production 问题 - 使用 Laravel 4.1.x 更新作曲家

    到目前为止 我在部署 Laravel 项目时还没有遇到任何问题 我已经为这个项目部署了将近一年 但出现了一些新的错误 首先 我无法运行作曲家更新 因为它显示此错误 composer update Warning This developme
  • 使用 JDBC 实现迭代器设计模式

    我正在解决以下问题 迭代器设计模式是一种封装性很强的设计模式 举个例子 图书馆需要一个图书管理系统 一堂课为books 存储他们的详细信息和一个类library存储书籍和书架编号 假设图书馆希望使用以下方式将数据存储在数据库中JDBC 如何