MappingSqlQuery 和 RowMapper 的区别,推荐执行select操作的是哪一个?
Difference between MappingSqlQuery or RowMapper and which one is recommended to perform select operation?
我想执行 SELECT 操作。当我在 google 上搜索时,我得到了 MappingSqlQuery 和 RowMapper 示例。我对执行 SELECT 操作的最佳性能感到困惑?
MappingSqlQuery
实际上会在幕后创建一个RowMapper
并使用JdbcTemplate
到query 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);
}
所以从性能的角度来看,直接使用RowMapper
和JDBCTemplate
应该比MappingSqlQuery
快一点点。但这是您感觉不到的微观性能差异。
使用哪一个取决于您的喜好。对于 MappingSqlQuery,您必须为每个查询创建一个新的 class。对于 RowMapper
和 JdbcTemplate
,您只需为一组执行类似操作的查询创建一个 class。对于有很多查询的系统,我会选择后者,因为我不喜欢创建那么多 MappingSqlQuery
classes。
我想执行 SELECT 操作。当我在 google 上搜索时,我得到了 MappingSqlQuery 和 RowMapper 示例。我对执行 SELECT 操作的最佳性能感到困惑?
MappingSqlQuery
实际上会在幕后创建一个RowMapper
并使用JdbcTemplate
到query 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);
}
所以从性能的角度来看,直接使用RowMapper
和JDBCTemplate
应该比MappingSqlQuery
快一点点。但这是您感觉不到的微观性能差异。
使用哪一个取决于您的喜好。对于 MappingSqlQuery,您必须为每个查询创建一个新的 class。对于 RowMapper
和 JdbcTemplate
,您只需为一组执行类似操作的查询创建一个 class。对于有很多查询的系统,我会选择后者,因为我不喜欢创建那么多 MappingSqlQuery
classes。