gpt4 book ai didi

java - 如何使用 Spring MVC 和 Spring JdbcTemplate RowCallbackHandler 和流结果?

转载 作者:行者123 更新时间:2023-12-01 05:06:26 27 4
gpt4 key购买 nike

我目前有一个默认的 Spring 架构:Repostiory、Service、Controller (Spring WebMVC)、JacksonJson Mapper 作为“ View ”。我所有的存储库/服务/ Controller 方法如下所示:

public Collection<Pet> findPetsWithName(String name) {}

所以基本上每个层都会检索数据,进行一些计算并将其返回到下一层。

随着数据大小的增加,我开始使用 Spring JdbcTemplate、fetchsize 设置和 RowCallbackHandler,以便“流式传输”数据库结果,而不是一次获取所有结果。

我现在的问题是:我可以将“回调”方法应用于所有层,而不仅仅是存储库层,以便所有结果都进入回调函数,而不是将它们作为集合返回吗?它可以与 SpringMVC View 一起使用吗?我想我最终会得到一个链式回调:

RowCallbackHandler(ServiceCallbackHandler(ControllerCallbackHandler(SpringViewHandler(HttpSerlvetResponse))))

public void findPetsWithName(String name, Callback<Pet> callback) {}

有人经历过这种方法吗?是否有现有的模式或模板?我认为只有大数据量才有好处,因为它更难以设计。

最佳答案

我唯一一次将数据从行映射器流式传输到响应是当我们在数据库中存储大量加密的二进制数据并希望按原样流式传输它以由我们的 think 客户端解密时。

假设这是您正在考虑的情况,您应该使用 ResultSetExtractor。您可以从回调中的结果集中获取流(假设您的数据类型与 blob 等效),并将其通过管道传输到响应输出流,该输出流被接受为您的 repo 方法的参数。

如果您希望实现一种设计,其中每一行都应映射到一个对象,并且回调机制应将对象一一传递回更高层,请告诉我。

关于java - 如何使用 Spring MVC 和 Spring JdbcTemplate RowCallbackHandler 和流结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12599757/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com