按数组列表自定义分页

2024-01-24

我想在java代码中通过数组列表创建自定义分页

import org.springframework.data.domain.Sort;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageImpl;
import org.springframework.data.domain.Sort.Direction;
...    

    int page = 0;
    int count = 8;
    String sortOrder = "desc";
    String sortBy = "id";

    Sort sort = new Sort(Direction.fromString(sortOrder), sortBy);
    PageRequest pageable = new PageRequest(page, count, sort);

    List<Impianto> impiantos = myService.findMyMethod(); // returned 30 objects 
    Page<Impianto> pageImpianto = new PageImpl<Impianto>(impiantos, pageable, impiantos.size()); 

上面的脚本不返回包含 8 个元素的页面。为什么?

注意:该列表没有从数据库返回

你能帮助我吗?


I SOLVED通过此解决方法。

    import org.springframework.data.domain.Sort;
    import org.springframework.data.domain.PageRequest;
    import org.springframework.data.domain.Page;
    import org.springframework.data.domain.PageImpl;
    import org.springframework.data.domain.Sort.Direction;
    ...    

        int page = 0;
        int count = 8;
        String sortOrder = "desc";
        String sortBy = "id";

        Sort sort = new Sort(Direction.fromString(sortOrder), sortBy);
        PageRequest pageable = new PageRequest(page, count, sort);

        List<Impianto> impiantos = myService.findMyMethod(); // returned 30 objects 
        int max = (count*(page+1)>impiantos.size())? impiantos.size(): count*(page+1);

        Page<Impianto> pageImpianto = new PageImpl<Impianto>(impiantos.subList(page*count, max), pageable, impiantos.size());  

我实现了一个新的自定义比较器类

import java.lang.reflect.Field;
import java.util.Comparator;
import java.util.Date;

public class MyListComparator implements Comparator<Object> {

    final String sortBy;
    final String sortOrder;

    public MyListComparator(String sortBy, String sortOrder) {
        this.sortBy = sortBy;
        this.sortOrder = sortOrder;
    }

    @Override
    public int compare(Object o1, Object o2) {

        try {
            Field field1 = o1.getClass().getDeclaredField(sortBy);
            Field field2 = o2.getClass().getDeclaredField(sortBy);

            field1.setAccessible(true); // because the fields in Impianto entity has "private" 
            field2.setAccessible(true);

            if(o1.getClass().getDeclaredField(sortBy).getType() == Long.class){
                Long d1 = (Long) field1.get(o1);
                Long d2 = (Long) field2.get(o2);
                return (sortOrder.toLowerCase().equals("asc"))? d1.compareTo(d2) : d2.compareTo(d1);

            }else if(o1.getClass().getDeclaredField(sortBy).getType() == Date.class){
                Date d1 = (Date) field1.get(o1);
                Date d2 = (Date) field2.get(o2);
                return (sortOrder.toLowerCase().equals("asc"))? d1.compareTo(d2) : d2.compareTo(d1);

            }else{
                String d1 = (String) field1.get(o1);
                String d2 = (String) field2.get(o2);
                return (sortOrder.toLowerCase().equals("asc"))? d1.compareTo(d2) : d2.compareTo(d1);

            }
        } catch (SecurityException e) {
            throw new RuntimeException(e);
        } catch (NoSuchFieldException e) {
            throw new RuntimeException("Missing variable sortBy");
        }catch (ClassCastException e) {
            throw new RuntimeException("sortBy is not found in class list");
        } catch (IllegalArgumentException e) {
            //shoud not happen
            throw new RuntimeException(e);
        } catch (IllegalAccessException e) {
            throw new RuntimeException(e);
        }
    }


}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

按数组列表自定义分页 的相关文章

随机推荐

  • 观看过程替换

    我经常运行命令 squeue u USER tee gt wc l where squeue is a 泥浆命令 https slurm schedmd com squeue html查看您正在运行多少个作业 这给了我两个输出squeue并
  • mysqldb 总是将整个查询结果拉入一个块,即使我只是执行 fetchone?

    所以如果我这样做 import MySQLdb conn MySQLdb connect cur conn cursor cur execute SELECT FROM HUGE TABLE print hello print cur fe
  • 适用于 TB 级结构化数据的 Greenplum、Pivo​​tal HD + Spark 还是 HAWQ?

    我在 Greenplum DB 中有 TB 的结构化数据 我需要对我的数据运行本质上是 MapReduce 作业 我发现自己至少重新实现了 MapReduce 的功能 以便这些数据适合内存 以流式传输方式 然后我决定到别处寻找更完整的解决方
  • 将图像裁剪为正方形 - Android

    如何从左侧和右侧剪切矩形图像 600 x 300 以适合方形 ImageView 我不想调整图像大小 我只想将其裁剪为 300 x 300 解决方案 正如 blackbelt所说 Bitmap cropImg Bitmap createBi
  • 如何将 Aeson 的解析器与 IO 结合使用

    我的数据类型包含许多字段 如果不是由 JSON 配置文件手动指定 则应随机设置 我正在使用 Aeson 来解析配置文件 做这个的最好方式是什么 目前 我将值设置为等于某个不可能的值 然后检查该值以进行编辑 data Example Exam
  • iPhone:点击透明 UIScrollView 后面的视图

    我有一个 UIScrollView 设置为具有清晰的背景 滚动视图的一部分确实有内容 但一部分没有 因此它显示了后面的其他视图 我希望能够单击 UIScrollView 并单击后面的 MKMapView 但仅限于 UIScrollView
  • oracle存储过程中如何创建和使用临时表?

    我想在存储过程中创建临时表并以相同的方式访问它 但出现错误ORA 00942 Table or view does not exists 以下是我尝试过的过程 Create procedure myproc IS stmt varchar2
  • Flutter firebase 消息传递中的双重通知

    最近我升级到 firebase messaging 10 0 0 当应用程序未运行时 如果收到通知 它会显示两次 我收到后在代码中修改了通知数据并显示了它 即使如此 我也可以看到已修改和未修改的通知 我不知道该通知在哪里触发 但是当应用程序
  • DOORS数据库中的动态数组值得使用吗?

    我是 DOORS 数据库的新开发人员 正在使用 dxl 编写脚本 如您所知 dxl 中有一维数组 我想使用多个维度 因此决定使用动态数组 但这大大减慢了我的脚本速度 当每个模块大约有 14 000 个对象时 脚本运行需要一天左右的时间 我想
  • 浏览核心数据对象图 [2]

    我问了一个question https stackoverflow com questions 12733490 navigating the core data object graph昨天我真的应该从一个更简单的例子开始 将我的问题提炼
  • 在实践 II 中使用 Scala Actor 编写应用程序 [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 因为我的第一个问题太长 所以我将其作为一个单独的问题提出 这是关于基于参与者的应用程序架构的另一篇文章
  • 使用react-router登录后自动重定向

    我想在我的应用程序中建立一个 Facebook 登录反应 反应路由器 通量应用 我在登录事件上注册了一个侦听器 并且希望将用户重定向到 dashboard 如果他们已登录 我该怎么做 location push除非完全重新加载页面后 否则效
  • 使用带有新值的片段多次并进行后台维护

    我正在制作一个应用程序滑动菜单 and tab在底部 整个应用程序是fragment基于 我面临一些我正在使用的问题片段A然后点击一个按钮并转到片段B in 片段B有一个按钮 点击这个按钮片段A将用新值更新 等等 意味着应该发生从 A gt
  • 如何在 C# 中应用 Word 快速样式 - 不仅仅是简单的格式设置而是整个样式?

    我承认 我对使用 Interop 库很陌生 但人们似乎总是给出的建议是 记录一个宏并检查 vba 代码 问题是 宏没有准确记录我在做什么 单击快速样式将其应用到当前选择 我的任务非常简单 我需要将快速样式应用于段落 Microsoft Of
  • 在已经运行 64 位 Oracle 数据库服务器的 Windows Server 上安装 Oracle 32 位客户端

    我在Windows 2008 R2上安装了64位Oracle数据库服务器 11 2 0 3 自然地 它会自动安装64位客户端 我必须在该 32 位服务器上安装一个应用程序 并且需要 32 位 Oracle 客户端 不要问 我无法安装此应用程
  • 在R中的轴标题中同时使用下标和变量值

    我想在 R 的绘图中使用标题 湿地中的二氧化碳排放量 而 CO2 中的 2 位于下标中 并且该区域的值 此处 湿地 包含在名为 区域 的变量中 region wetlands plot 1 1 main expression CO 2 pa
  • 删除 Parse 上的多条记录

    我的类在 Parse 上有超过 1 1 亿条记录 并且希望根据一条规则删除 99 的记录 状态 1 我设置了一些后台作业来逐个记录此记录 但速度太慢并且类慢慢变大 有什么办法可以更快地删除它们吗 也许在设定日期之前删除所有对象 Thanks
  • 在 Intellij Idea Community Addition 中安装 PHP 插件

    我正在尝试在我的 Intellij Idea IDE 社区版版本 14 中安装 PHP 插件 我相信这是非常受支持的 因为我看到有一个插件网站显示社区 PHP 插件 URL https plugins jetbrains com plugi
  • 在 Javascript 中覆盖警报并确认

    有没有办法覆盖alert and confirm 在 JavaScript 中 我使用 jQuery 所以如果有办法在这个框架中做到这一点 我将不胜感激 我想做这样的事情 override alert msg Show custom stu
  • 按数组列表自定义分页

    我想在java代码中通过数组列表创建自定义分页 import org springframework data domain Sort import org springframework data domain PageRequest i