java中List分页的几种方法介绍

目录
  • 1.根据入参带分页参数进行sql查询分页
  • 2.对所有list根据分页参数分页
  • 3.PageHelper分页

1.根据入参带分页参数进行sql查询分页

         Criteria criteria = new Criteria();
         //将dataAuto转成 factoryId brandId seriesId 等查询条件
         String dataAuth = "";
         TypeCaseHelper.dataAuto(criteria, dataAuth);
         // 设置分页信息
         ExtPager pager = new ExtPager();
         Integer startTure = start * pageSize;
         criteria.setMysqlPageSize(pageSize);
         criteria.setMysqlStart(startTure);
         // 排序信息
         if (StringUtils.isNotBlank(pager.getDir()) && StringUtils.isNotBlank(pager.getSort())) {
             criteria.setOrderByClause(pager.getSort() + " " + pager.getDir());
         }
         List<VhlAlarmStatusMgtEntity> listDistinct = getVhlAlarmStatusMgtEntities(vin, faultStatus, confirmStatus, startDateTime, endDateTime, sdf, sdfm, carTypeList, criteria);

对应的分页sql

  <select id="selectByExample" parameterType="Criteria" resultMap="BaseResultMap">
    select
    <include refid="Base_Column_List" />
    from status_mgt
    <where>
      <if test="condition.carTypeList != null and condition.carTypeList.size() > 0" >
        and car_type in
        <foreach collection="condition.carTypeList" item="item"  open="(" separator="," close=")">
          #{item}
        </foreach>
      </if>
      <if test="condition.startDateTime != null and condition.startDateTime!=''">
        and alarm_time >= str_to_date(#{condition.startDateTime,jdbcType=VARCHAR},'%Y-%m-%d %H:%i:%S')
      </if>
      <if test="condition.endDateTime != null and condition.endDateTime!=''">
        and  str_to_date(#{condition.endDateTime,jdbcType=VARCHAR},'%Y-%m-%d %H:%i:%S') >= alarm_time
      </if>
      and logic_flag = 1
    </where>
    order by alarm_time desc
    <if test="mysqlStart != null  and mysqlPageSize != null">
        limit #{mysqlStart}, #{mysqlPageSize}
    </if>

  </select>

2.对所有list根据分页参数分页

         Criteria criteria1 = new Criteria();
         List<VhlAlarmStatusMgtEntity> listDistinctForCout = getVhlAlarmStatusMgtEntities(vin, faultStatus, confirmStatus, startDateTime, endDateTime, sdf, sdfm, carTypeList, criteria1);
         Integer count = listDistinctForCout.size(); // 记录总数
         Integer pageCount; // 页数
         if (count % pageSize == 0) {
             pageCount = count / pageSize;
         } else {
             pageCount = count / pageSize + 1;
         }
         int fromIndex; // 开始索引
         int toIndex; // 结束索引
         if (!pageCount.equals(start+1)) {
             fromIndex = start * pageSize;
             toIndex = fromIndex + pageSize;
             if(toIndex > count){
                 fromIndex = (start-1) * pageSize;
                 toIndex = count;
             }
         } else {
             fromIndex = start * pageSize;
             toIndex = count;
         }
         List<VhlAlarmStatusMgtEntity> pageList = listDistinctForCout.subList(fromIndex, toIndex);

3.PageHelper分页

      //开启分页
        PageHelper.startPage(Integer.parseInt(pageNum), Integer.parseInt(pageSize));

        PageInfo<Map<String, String>> pageInfo = new PageInfo(datalist);

        HashMap<String, Object> map= new HashMap<>();
        map.put("datalist", datalist);
        map.put("total", pageInfo.getTotal());
        map.put("size", pageInfo.getPageSize());
        map.put("page", pageInfo.getPageNum());

到此这篇关于java中List分页的几种方法介绍的文章就介绍到这了,更多相关java List分页方法内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Java中List分片的5种方法小结

    目录 简介 1.Google Guava 2.apache commons 3.Hutool 4.JDK 5.自定义分片 总结 前些天在实现 MyBatis 批量插入时遇到了一个问题,当批量插入的数据量比较大时,会导致程序执行报错,如下图所示: 原因是 MySQL 只能执行一定长度的 SQL 语句,但当插入的数据量较多时,会生成一条很长的 SQL,这样程序在执行时就会报错. 要解决这个问题,有两种方法:第一,设置 MySQL 可以执行 SQL 的最大长度:第二,将一个大 List 分成 N 个小

  • java关于list集合做删除操作时的坑及解决

    目录 关于list集合做删除操作时的坑 解决办法 对List集合的常用操作 1.list中添加,获取,删除元素 2.list中是否包含某个元素 3.list中根据索引将元素数值改变(替换) 4.list中查看(判断)元素的索引 5.根据元素索引位置进行的判断 6.利用list中索引位置重新生成一个新的list(截取集合) 7.对比两个list中的所有元素 8.判断list是否为空 9.返回Iterator集合对象 10.将集合转换为字符串 11.将集合转换为数组 12.集合类型转换 13.去重复

  • Java数据结构之List的使用总结

    目录 泛型 什么是泛型 泛型的分类 泛型的定义简单演示 泛型背后作用时期和背后的简单原理 泛型类的使用 泛型总结 包装类 基本数据类型和包装类直接的对应关系 包装类的使用,装箱(boxing)和拆箱(unboxing) List的使用 List常用方法 使用示例 自动发牌案例 泛型 什么是泛型 泛型:即通过参数化类型来实现在同一份代码上操作多种数据类型.泛型是在C#2.0引入的.泛型(Genericity)的字面意思是指具有在多种数据类型上皆可操作的含意,与模板有些相似. 优点:泛型类和泛型方法

  • java中List分页的几种方法介绍

    目录 1.根据入参带分页参数进行sql查询分页 2.对所有list根据分页参数分页 3.PageHelper分页 1.根据入参带分页参数进行sql查询分页 Criteria criteria = new Criteria(); //将dataAuto转成 factoryId brandId seriesId 等查询条件 String dataAuth = ""; TypeCaseHelper.dataAuto(criteria, dataAuth); // 设置分页信息 ExtPage

  • java中实现分页的几种常见方式总结

    目录 1. 前言 2. 先说结论 3. 例子 1. 数据库SQL的限制条件(limit.fetch) 2. 使用List集合的截取功能实现 3. 插件PageHelper 总结 1. 前言 无论是自我学习中,还是在工作中,固然会遇到与前端搭配实现分页的功能,发现有几种方式,特此记录一下. 2. 先说结论 分页功能直接交给前端实现(根据业务场景且仅仅只能用于数据量少的情况).即后端不做任何数据的限制,直接把全部数据返回给前端,前端通过组件实现分页,筛选等功能.请不要轻视该方式,好处即只需要前后端交

  • Java中获取当前路径的几种方法总结

    Java中获取当前路径的几种方法总结 1.利用System.getProperty()函数获取当前路径: System.out.println(System.getProperty("user.dir"));//user.dir指定了当前的路径 2.使用File提供的函数获取当前路径: File directory = new File("");//设定为当前文件夹 try{ System.out.println(directory.getCanonicalPath

  • Java中求最大值的4种方法实例代码

    前言 本文主要给大家分享了关于java求最大值的4中方法,文中给出了完整的示例代码,下面话不多少了,来一起看看吧 示例代码: /** *@author Prannt *求最大值(或最小值) *本例以int数据类型为例,可指定其他数据类型 */ //方法一:直接法,求最小值类似 public class Deno05ArrayMax { public static void main(String[] args) { //数据类型可指定 int [] array = {5,15,20,30,100

  • Java中ArrayList初始化的四种方法详解

    1 起因 在实际业务开发中, 我们经常会遇到需要临时创建一个数组的情况, 今天我们就来讲一下Java中ArrayList初始化的方法 2 解决方案 直接上结论, 总共有四种初始化方法: 双括号法 Arrays.asList stream Lists 2.1 双括号法 List<Integer> test = new ArrayList<Integer>(){{ add(1); add(2); }}; 2.2 Arrays.asList List<Integer> tes

  • Java中ArrayList同步的2种方法分享

    目录 方法一:使用Collections.synchronizedList()方法 方法2:使用CopyOnWriteArrayList 向量同步时为什么要使用arrayList? 前言: arrayList 的实现是默认不同步的.这意味着如果一个线程在结构上修改它并且多个线程同时访问它,它必须在外部同步.结构修改意味着从列表中添加或删除元素或显式调整后备数组的大小.改变现有元素的值不是结构修改. 有两种方法可以创建同步Arraylist: 1. Collections.synchronized

  • 汇总Java中List 去重的 6 种方法

    目录 前置知识 无序集合 有序集合 有序和无序 方法1:contains判断去重(有序) 方法2:迭代器去重(无序) 方法3:HashSet去重(无序) 方法4:LinkedHashSet去重(有序) 方法5:TreeSet去重(无序) 方法6:Stream去重(有序) 总结 前言: 在日常的业务开发中,偶尔会遇到需要将 List 集合中的重复数据去除掉的场景.这个时候可能有同学会问:为什么不直接使用 Set 或者 LinkedHashSet 呢?这样不就没有重复数据的问题了嘛? 不得不说,能提

  • Java中性能优化的35种方法汇总

    前言 对程序员们来说,代码优化是一个很重要的课题.可能有些人觉得没用,一些细小的地方有什么好修改的,改与不改对于代码的运行效率有什么影响呢?这个问题我是这么考虑的,就像大海里面的鲸鱼一样,它吃一条小虾米有用吗?没用,但是,吃的小虾米一多之后,鲸鱼就被喂饱了.代码优化也是一样,如果项目着眼于尽快无BUG上线,那么此时可以抓大放小,代码的细节可以不精打细磨:但是如果有足够的时间开发.维护代码,这时候就必须考虑每个可以优化的细节了,一个一个细小的优化点累积起来,对于代码的运行效率绝对是有提升的.

  • Java中初始化List的5种方法示例

    前言 List是java重要的数据结构之一,我们经常接触到的有ArrayList.Vector和LinkedList三种,他们都继承来自java.util.Collection接口,类图如下 Java 中经常需要使用到 List,下面简单介绍几种常见的初始化方式. 1.构造 List 后使用 List.add 初始化 这是最常规的做法,用起来不太方便. 2.使用 {{}} 双括号语法 这种方式相对方便了一些. 外层的{}定义了一个 LinkedList 的匿名内部类.内层的{}的定义了一个实例初

随机推荐