繁体   English   中英

来自Spring-JDBC的getResultSet

[英]getResultSet from Spring-JDBC

我正在使用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 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM