6

我正在使用 Spring 对 JDBC 的支持。我想使用JdbcTemplate(或 SimpleJdbcTemplate)来执行查询并获取结果作为 ResultSet 的实例。

我能看到实现这一目标的唯一方法是使用:

String sql = "select * from....";
SqlRowSet results = jdbcTemplate.queryForRowSet(sql);
((ResultSetWrappingSqlRowSet) results).getResultSet();

这种方法的一个明显缺点是它需要我对 SqlRowSet 的实现类型做出假设(通过强制转换),但是有更好的方法吗?

背景资料...

我想以 ResultSet 而不是 bean 集合的形式获取结果的原因是因为结果将直接传递给 Jasper 报告以进行显示。换句话说,Java bean 将只用于临时存储 ResultSet 中的每一行,如果可能的话,我想避免为每个 Jasper 报告创建这样的 bean。

干杯,唐

4

2 回答 2

1

如果您只想执行查询并获取结果,为什么不使用纯 jdbc 并获取结果集?请注意,您不需要 spring 来执行此操作。

    Connection c = ...
    c.prepareCall("select ...").getResultSet();

此外,您可以通过将对象用作 DTO 来获得优势。即使您的数据访问或报告工具发生更改,您也不需要更改 DTO 类(假设您开始使用 xquery 而不是 jdbc,或者您使用 apache-poi 而不是 jasper。

于 2008-10-17T15:24:07.787 回答
0

您可以在 JdbcTemplate 回调(如 ResultSetExtractor)中调用 Jasper,也可以使用直接 JDBC 将 ResultSet 传递给 Jasper。无论哪种方式,当您调用 Jasper 时,您与数据库的连接仍然处于活动状态,直到您的报告完成。

于 2011-10-27T02:35:11.777 回答