MappingSqlQuery 和 RowMapper 的区别,推荐执行select操作的是哪一个?

Difference between MappingSqlQuery or RowMapper and which one is recommended to perform select operation?

我想执行 SELECT 操作。当我在 google 上搜索时,我得到了 MappingSqlQueryRowMapper 示例。我对执行 SELECT 操作的最佳性能感到困惑?

MappingSqlQuery实际上会在幕后创建一个RowMapper并使用JdbcTemplatequery the result:

public List<T> execute(@Nullable Object[] params, @Nullable Map<?, ?> context) throws DataAccessException {
    validateParameters(params);
    RowMapper<T> rowMapper = newRowMapper(params, context);
    return getJdbcTemplate().query(newPreparedStatementCreator(params), rowMapper);
}

所以从性能的角度来看,直接使用RowMapperJDBCTemplate应该比MappingSqlQuery快一点点。但这是您感觉不到的微观性能差异。

使用哪一个取决于您的喜好。对于 MappingSqlQuery,您必须为每个查询创建一个新的 class。对于 RowMapperJdbcTemplate,您只需为一组执行类似操作的查询创建一个 class。对于有很多查询的系统,我会选择后者,因为我不喜欢创建那么多 MappingSqlQuery classes。