如何以编程方式从没有数据库的定制数据创建 Java 结果集

2022-09-01 10:47:13

我有一些现有的代码,可以接受包含从Oracle数据库中检索到的信息的代码。我现在想重用这段代码,但我想向它传递一个对象,这是我从一些不隶属于任何数据库的内存数据中创建的。是否有现有的 Java 框架类可用于此目的? 有大量的方法,所以实现我自己的类似乎有点过分了,即使我可以忽略我的具体情况的大多数方法。java.sql.ResultSetResultSetResultSet

我正在考虑一些类似于旧的Microsoft ADO记录集对象的东西,我可以在其中创建字段,然后填充每个字段的行数据。这似乎是一个容易理解的问题,但我一直找不到任何好的指针。


答案 1
  • 创建你自己的类,一个(像 AbstractQueue 一样)通过抛出 UnsupportedOperationException 来实现所有方法的类(Eclipse 在一瞬间自动生成这些方法)。AbstractResultSet
  • 现在扩展 .子类只能重写您有兴趣实现的方法。AbstractResultSet

答案 2

这是一个稍微左场的解决方案,但你可以使用一个模拟框架(例如JMock)。这些框架通常用于创建用于单元测试的接口的模拟实现,但是我认为没有理由使用一个框架来创建的“部分实现”。java.sql.ResultSet

例如,假设您只想实现该方法,而没有别的:getString()

Mockery mockery = new Mockery();
final ResultSet resultSet = mockery.mock(ResultSet.class);

mockery.checking(new Expectations() {{
    allowing(resultSet).getString(1); will(returnValue("my first string"));
    allowing(resultSet).getString(2); will(returnValue("my second string"));
}});

// resultSet is now a java.sql.ResultSet object, which you can pass to your legacy code
resultSet.getString(1);

相当非正统,而且相当麻烦,但它应该有效


推荐