MappingSqlQuery或RowMapper之间的区别,建议执行选择操作中的哪一个?

时间:2019-02-14 06:21:53

标签: spring spring-jdbc

我要执行SELECT操作。当我在Google上搜索时,我得到了 MappingSqlQuery RowMapper 示例。我感到困惑的是执行SELECT操作的最佳性能是哪一个?

1 个答案:

答案 0 :(得分:1)

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,您必须为每个查询创建一个新类。对于带有RowMapper的{​​{1}},您只需要为执行类似操作的一组查询创建单个类。对于具有大量查询的系统,我会选择后一个,因为我不想创建太多的JdbcTemplate类。