有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何使用SpringMVC和SpringJDBC模板RowCallbackHandler和流结果?

我目前有一个默认的Spring架构:repository、Service、Controller(SpringWebMVC)、JacksonJson映射器作为“视图”。我的所有存储库/服务/控制器方法如下所示:

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

因此,基本上每一层都检索数据,进行一些计算并将其返回到下一层

随着数据大小的增加,我正在使用SpringJDBCTemplate、fetchsize设置和RowCallbackHandler来“流化”数据库结果,而不是一次获取所有结果

我现在的问题是:我是否可以将“回调”方法应用于所有层,而不仅仅是存储库层,以便将所有结果都存储到回调函数中,而不是将它们作为集合返回?它是否适用于SpringMVC视图?我想我最终会得到一个链接回调:

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

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

有没有人使用过这种方法?是否有它的现有模式或模板?我认为大数据量只有一个好处,因为它更难设计


共 (1) 个答案

  1. # 1 楼答案

    我将数据从行映射器流式传输到响应的唯一一次使用是在数据库中存储大型加密二进制数据时,希望按原样流式传输数据,以供think客户端解密

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

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