java - 来自 Spring 数据的 Page 的映射如何工作?
问题描述
正如标题所说,来自 org.springframework.data.domain.Page的地图是如何工作的?
根据文档,它建议您将转换器作为地图参数,然后您将获得一个包含转换后内容的新地图。根据这种解释,我将代码编写如下。
Page<T> results = getPagedResults();
return results.map(x -> {
x.setElement("some constant");
return x;
});
然而,上述并没有按预期工作。我得到了所有其他值(如计数等)完整的页面,但内容是一个空列表!我实际上不得不以这种方式编写代码。
Page<T> results = getPagedResults();
return new Page<T>() {
@Override
public int getTotalPages() {
return results.getTotalPages();
}
...
@Override
public List<T> getContent() {
List<T> contents = result.getContent();
for (T content : contents) {
content.setElement("some constant");
}
return contents;
}
...
};
第二个选择是冗长的,似乎做了多余的工作。我本来希望第一段代码也能做到这一点,但事实并非如此。
我读错了文档吗?如果不应该使用 Page 的 map 功能,你会在哪里使用它,就像我使用它的方式一样?
解决方案
像下面这样放置一个真正的转换器怎么样:
Page<T> results = getPagedResults();
Page<T> convertedResults = results.map(new Converter<T, T>() {
@Override
public T convert(T page) {
Page page2 = new Page();
page2.setElement('some constant');
//set other fields
return page2;
}
});
推荐阅读
- apache-spark-sql - cloudera 中的 Hbase-Spark 连接器问题:java.lang.AbstractMethodError
- c++ - VK_FILTER_NEAREST 在采样期间不工作
- javascript - 从本地存储中删除后重新渲染反应组件?
- php - 如何使用 functions.php 制作 Wordpress 过滤器/操作
- python - Python - 从dict在线打印
- mongodb - 使用 ssh 连接 Yii2 和远程 mongodb 数据库
- python - 如何使用 python 的 paramiko 获取当天的 SSH 消息(MOTD)?
- sap - SAP Hybris - 店面中当前选择的类别或产品
- javascript - 需要将数字转换为货币
- excel - ImportExcel 用于具有多个表的数据集