我使用Spring-Data-JDBC(不是JPA)并希望设置获取大小.

我知道classic org.springframwork.jdbc.core.JdbcTemplate有一个setFetchSize(int)方法,但我有Spring数据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 to set the sql query fetch-size when using Spring-Data-JDBC, either by query or in general?

(The common solutions for Spring-Data-JPA will not work, because there is no 100 or 101annotation because it is 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);
}

Java相关问答推荐

转换为Biggram

使用包私有构造函数强制子类Java类

我无法将附件发送到NetBeans之外

无法处理批处理侦听器中的反序列化异常

Kubernetes的Java客户端检索状态.处于终止状态的Pod的阶段';正在运行';

Spring Boot@Cachebale批注未按预期工作

在Java Swing Paint应用程序中捕获快速鼠标移动时遇到困难

从Spring5迁移到Spring6:无法在雅加达包中找到类

Com.example.service.QuestionService中的构造函数的参数0需要找不到的类型为';com.example.Dao.QuestionDao;的Bean

为什么在maven中,getLast方法不适用于List?

Mac上的全屏截图在使用JavaFX时不能正常工作吗?

Java连接池无法正常工作

如何在代码中将行呈现在矩形前面?

JNI:将代码打包成自包含的二进制文件

垃圾回收器是否真的删除超出作用域的对象?

无法播放音频:从资源加载库GStreamer-Lite失败

错误:未找到扩展元素在JBossEAP 7.2中安装FUSE时出错

如何生成指定范围内的11位序列号?

Eureka客户端无法使用用户/通行证注册到Eureka服务器

元音变音字符:如何在 Java 中将Á<0x9c>转换为Ü?