我有一个返回列表的现有服务
我如何将下面的示例转换为通量,这样我的结果就可以流式传输,而不必在内存中聚集所有项目?
@RestController
public class BookingInfoServlet {
@Autowired
private JdbcTemplate jdbc;
@GetMapping(value = "/export", produces = APPLICATION_JSON_VALUE)
public List<Item> export(String productType) {
List<Item> list = new ArrayList<>();
for (int i = 0; i < jdbc.count(); i++) {
List<String> refIds = jdbc.queryForList("SELECT ref_id FROM products where type = ? LIMIT 1000 OFFSET = ?", String.class, productType, i);
for (String id : refIds) {
Map map = jdbc.queryForMap("SELECT <anything> ... where some_id = ?, id);
Item item = new Item();
item.setName(map.get("name"));
item.setCode(map.getCode("code"));
item.set...
list.add(item);
}
//TODO how to convert to Flux here and already send the chunks back into the stream?
}
return list; //TODO how to convert to Flux?
}
}
第一个问题:这里我首先将第一个查询的所有结果提取到内存中,然后在内存中迭代并形成我所有的Item
,然后返回整个列表。
因此我试图返回Flux
由于没有async
mysql
java驱动程序,我可能必须将数据库查找分页为1000个块,然后准备1000个项目并已经将它们流式传输回客户端。然后获取接下来的1000个项目。但是我如何直接将它们放入流中?
public Flux<Item> export(String productType) {
int pageSize = 1000;
int count = jdbc.count();
return Flux.range(0, count / pageSize) //page numbers
.flatMapIterable(pageNumber ->
jdbc.queryForList("SELECT ref_id FROM products where type = ? LIMIT ? OFFSET = ?",
String.class,
productType,
pageSize,
pageNumber * pageSize))
.map(id -> {
Map map = jdbc.queryForMap("SELECT <anything> ... where some_id = ?", id);
Item item = new Item();
//
//
return item;
});
}
如何将flux 转换为mono 对象?
我找了无数的问题。但大多数问题如下。 实体- 但我不想这样。 若Dto中不存在实体中的属性值,我想知道如何将Dto转换为实体。 没有为[annotations,Lombok,jpa,…]指定代码,但是它存在! userService的所有方法都返回DTO。如何在Post实体中设置用户实体?我收到一个userDto返回,它只有用户名。 这种时候我该怎么办? 存储库不是直接从控制器调用的。 服务将无条
问题内容: 我是Java的新手,想知道double转换为int cast如何工作吗?我知道,只需将低32位转换为int就很容易了,但是将double(64位)转换为int(32位)呢?来自二进制的double中的那64位是Double- precision浮点格式(Mantissa),那么它如何在内部转换为int? 问题答案: 所有这些都记录在JLS的5.1.3节中。 第一步,将浮点数转换为lon
我有课 我有一个JSON请求 我有一个REST API 当我调用此API并可视化此student对象时,这两个字段都有我提供的请求中的值。 我不明白的是: JSON值如何直接映射到学生类对象 是否涉及序列化/反序列化 建构师在学生课堂上有什么重要性吗
问题内容: 有没有办法将a 变成a 或将一个字母变成a (例如如何将a 变成a 和a 变成an )?(如果可以,请链接到相关文档)。 我该如何找到在文档中才隐约知道的类似内容? 问题答案: 您可以通过确定可能涉及的类来查找文档。在这里,候选人是和。 您应该先熟悉以下内容: 原始包装 中的Java Collection框架 它还有助于通过教程更慢地介绍API。 处理字符串中的字符
问题内容: 我一直在这里找到问题,并且Google的人们遇到了麻烦,而不是遇到了其他麻烦。但我敢肯定,我不是以前已经从去碰到这种情况的唯一一个到。 我发现的唯一其他答案是“首先将其设置为Long”,这实际上并没有解决这个问题。 我最初尝试投射,但得到了“ ” 如您所料,我有点困惑,我被困住了,因为有些内容以形式出现,而我要存储其信息的实体要求序列号为Long。 问题答案: 请注意,强制转换为和强制