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

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

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

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

背景信息......

我想要将结果作为ResultSet而不是bean的集合获取的原因是因为结果将直接传递给Jasper报告以供显示。换句话说,除了临时存储ResultSet中的每一行之外,Java bean只能用于其他任何事情,我想尽可能避免为每个Jasper报告创建这样的bean。

干杯,唐

有帮助吗?

解决方案

如果您只想执行查询并获得结果,为什么不使用普通的jdbc并获取结果集?请注意,你不需要弹簧就可以做到这一点。

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

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

其他提示

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

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top