org.springframework.jdbc.core.JdbcOperations.query(PreparedStatementCreator,ResultSetExtractor)是否可能返回封闭的RowSet?

问题描述 投票:0回答:1

我正在从数据库中选择,我想确定是否需要检查RowSet是否为空。我需要做一个简单的if语句还是可以保留它?

这够了吗?

    //RowSet rs = (...)
    try {
        rs.next()
        //process data
    } catch (SQLException e) {

    }

或者我必须像这样在其中放入if语句:

    //RowSet rs = (...)
    try {
        if (rs.next()) {
            //process data
        }
    } catch (SQLException e) {

    }

即使rs.next()为空或仅在关闭时SQLException也会抛出RowSet吗?提出问题的另一种方法:RowSet为空时是否关闭了?

java jdbc rowset
1个回答
0
投票

尽管这不能回答您的问题...我会问您为什么不使用JdbcTemplate的内置转换/映射功能。 Spring为您抽象了大多数ResultSet的打开,迭代,关闭操作,因此您可以专注于将数据映射到对象。您可以使用RowMapper的实现,该实现为您提供mapRow(ResultSet rs, int rowNum)方法,并且可以将每一行映射到一个对象。如果没有行返回,则映射器将永远不会执行。每个映射的结果都进入一个列表,因此如果没有行,则您的列表将为空。

List<MyType> rowsFromDatabaseMapped = jdbcTemplate.query(SQL_STR, new Object[]{any_params}, new MyTypeMapper());
© www.soinside.com 2019 - 2024. All rights reserved.