如何在 Spring-Data-JDBC 中设置 fetch-size
How to set fetch-size in Spring-Data-JDBC
我使用 Spring-Data-JDBC(不是 JPA)并想设置获取大小。
我知道经典 org.springframwork.jdbc.core.JdbcTemplate
有一个 setFetchSize(int)
方法,但我有 Spring-Data-JDBC 存储库:
org.springframework.data.repository.Repository;
org.springframework.data.jdbc.repository.query.Query;
/** This is a Spring Data <b>JDBC</b> (JDBC not JPA!). */
public interface UserDao extends Repository<User, Long> {
@Query(value = UserRowMapper.SELECT_BY_NAME_STATEMENT
rowMapperClass = UserRowMapper.class)
Optional<User> findByName(String name);
}
这是配置的相关部分:
@Configuration
@EnableJdbcRepositories
public class AppConfigSpringDataJdbc extends AbstractJdbcConfiguration {
@Autowired
private DataSource dataSource;
@Bean
public NamedParameterJdbcTemplate namedParameterJdbcTemplate() {
return new NamedParameterJdbcTemplate(this.dataSource);
}
}
所以我的问题是:How/Where 在使用 Spring-Data-JDBC 时设置 sql 查询获取大小,或者通过查询还是一般?
(Spring-Data-JPA的常见解决方案不会起作用,因为没有persistence.xml
或javax.persistence.QueryHint
注解,因为它是JDBC)
您可以使用自定义 JdbcTemplate
创建 NamedParameterJdbcTemplate
。
@Bean
JdbcOperations jdbcOperations(DataSource dataSource) {
final var jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate.setFetchSize(100);
return jdbcTemplate;
}
@Bean
NamedParameterJdbcOperations namedParameterJdbcOperations(JdbcOperations operations) {
return new NamedParameterJdbcTemplate(operations);
}
我使用 Spring-Data-JDBC(不是 JPA)并想设置获取大小。
我知道经典 org.springframwork.jdbc.core.JdbcTemplate
有一个 setFetchSize(int)
方法,但我有 Spring-Data-JDBC 存储库:
org.springframework.data.repository.Repository;
org.springframework.data.jdbc.repository.query.Query;
/** This is a Spring Data <b>JDBC</b> (JDBC not JPA!). */
public interface UserDao extends Repository<User, Long> {
@Query(value = UserRowMapper.SELECT_BY_NAME_STATEMENT
rowMapperClass = UserRowMapper.class)
Optional<User> findByName(String name);
}
这是配置的相关部分:
@Configuration
@EnableJdbcRepositories
public class AppConfigSpringDataJdbc extends AbstractJdbcConfiguration {
@Autowired
private DataSource dataSource;
@Bean
public NamedParameterJdbcTemplate namedParameterJdbcTemplate() {
return new NamedParameterJdbcTemplate(this.dataSource);
}
}
所以我的问题是:How/Where 在使用 Spring-Data-JDBC 时设置 sql 查询获取大小,或者通过查询还是一般?
(Spring-Data-JPA的常见解决方案不会起作用,因为没有persistence.xml
或javax.persistence.QueryHint
注解,因为它是JDBC)
您可以使用自定义 JdbcTemplate
创建 NamedParameterJdbcTemplate
。
@Bean
JdbcOperations jdbcOperations(DataSource dataSource) {
final var jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate.setFetchSize(100);
return jdbcTemplate;
}
@Bean
NamedParameterJdbcOperations namedParameterJdbcOperations(JdbcOperations operations) {
return new NamedParameterJdbcTemplate(operations);
}