使用PageHelper插件分页时,如何对对象进行转换以及添加属性

一、插件介绍

PageHelper是针对Mybaits的分页插件,支持任何复杂的单表、多表分页。

二、基本用法

以springboot为例,有两种方式配置,一种是传统的,引入依赖,编写配置类;一种是使用application.yml进行配置。

第一种

1.引入依赖

<dependency>
  <groupId>com.github.pagehelper</groupId>
  <artifactId>pagehelper</artifactId>
  <version>4.1.6</version>
</dependency>

2.配置插件

/**
 * @author Hanstrovsky
 */
@Configuration
public class MybatisConfig {
    @Bean
    public PageHelper pageHelper() {
        PageHelper pageHelper = new PageHelper();
        Properties properties = new Properties();
        properties.setProperty("offsetAsPageNum", "true");
        properties.setProperty("rowBoundsWithCount", "true");
        properties.setProperty("reasonable", "true");
        properties.setProperty("dialect", "mysql");
        pageHelper.setProperties(properties);
        return pageHelper;
    }
}

第二种

1.引入依赖

<!-- https://mvnrepository.com/artifact/com.github.pagehelper/pagehelper-spring-boot-starter -->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.5</version>
</dependency>

2.配置插件

pagehelper:
  offset-as-page-num: true
  row-bounds-with-count: true
  page-size-zero: true
  reasonable: true
  auto-dialect: mysql

分页示范

public PageInfo<Student> findAll(Integer pageNum, Integer pageSize) {
        //设置分页信息
        PageHelper.startPage(pageNum, pageSize);
        List<Student> students = studentDao.findAll();
        PageInfo<Student> pageInfo = new PageInfo<>(students);
        //返回分页对象
        return pageInfo;
    }

三、对象转换

如以上代码示范,分页对象中直接分装了与数据库映射的实体列表。但是在开发过程中很多时候都要进行对象的转换,将DO对象转换为DTO或者VO,加上或去掉一些属性。

可以这样做:

/**
 * @author Hanstrovsky
 */
@Service
public class TestPage {
    @Autowired
    private StudentDao studentDao;

    public PageInfo<StudentVO> getAllStudent(Integer pageNum, Integer pageSize) {
        // 1. 开启分页
        PageHelper.startPage(pageNum, pageSize);
        // 2. 从数据库中查询出
        List<StudentDO> studentDos = studentDao.findAll();
        // 3. 这一步的作用主要是为了获取分页信息
        PageInfo studentDoPageInfo = new PageInfo<>(studentDos);
        // 4. 创建需要分页的VoList
        List<StudentVO> studentVos = new ArrayList<>();
        // 5. 对象转换
        for (StudentDO studentDO : studentDos) {
            StudentVO studentVO = new StudentVO();
            BeanUtils.copyProperties(studentDO, studentVO);
            studentVO.setClassName("六年级二班");
            studentVos.add(studentVO);
        }
        // 6.这一步的作用是将封装后的列表放到分页对象中
        studentDoPageInfo.setList(studentVos);
        return studentDoPageInfo;
    }
}

这里有个细节,第3步,要先通过原list创建PageInfo对象,这样才能获取到分页的那些参数。之前想当然的试过先把Dolist转换为Volist,再创建pageInfo对象,那样做的话,并不能获取到分页信息。

其实之所以可以这样做,就巧在原对象的分页参数,和转换后的对象的分页参数是一致的,于是我们才可以狸猫换太子。

还有一种方式,也可以再创建一个pageInfo对象,将原pageInfo的参数拷贝过去,同样能达到目的,贴出来,供参考。

public class PageUtils {
    public static <Do, Vo> PageInfo<Vo> convertPageInfo(PageInfo<Do> pageInfoDo) {
        // 创建Page对象,Page对象继承了ArrayList
        Page<Vo> page = new Page<>(pageInfoDo.getPageNum(), pageInfoDo.getPageSize());
        page.setTotal(pageInfoDo.getTotal());
        page.setStartRow(pageInfoDo.getStartRow());
        //... 等等信息,可以按需要挨个设置
        return new PageInfo<>(page);
    }
}

原文地址:https://www.cnblogs.com/hanstrovsky/p/12527022.html

时间: 2024-07-29 19:48:48

使用PageHelper插件分页时,如何对对象进行转换以及添加属性的相关文章

使用PageHelper插件分页结合mybatis返回的列表个数不对问题解决

问题描述:spring mvc+mybatis项目中,当使用PageHelper插件进行分页查询时,查到的总数据量值是正确的,但是查询当前页返回的列表个数不对.比如每页查询10条,返回2条或者3条.resultMap使用了association返回复杂属性. 格式如下: <resultMap type="orgDetail" id="porgDetailMap">        <result property="" colum

创建运行时类的对象,调用指定的属性方法构造器

1 使用newInstance(),实际上是调用运行时空参的构造器    注意构造器的权限修饰符要足够,同时必须有一个空参的构造器. 2 调用指定的属性方法构造器 package lianxi1; import java.lang.reflect.Constructor; import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Meth

ssm PageHelper 插件分页

先增加maven依赖: [html] view plain copy print? <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>4.0.0</version> </dependency> 创建mybatis配置文件:mybatis-config.xml内容:

Spring + Mybatis 使用 PageHelper 插件分页

转载:http://blog.csdn.net/joker_zhou/article/details/50418005 先增加maven依赖: [html] view plain copy print? <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>4.0.0</version&

在项目中配置PageHelper插件时遇到类型转换异常

PageHelper是一种常用的分页工具,按照常规方法在mybatis的配置文件中整合它: <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN" "http://mybatis.org/dtd/mybatis-3-config.dtd"> &l

SpringBoot整合mybatis使用pageHelper插件进行分页操作

SpringBoot整合mybatis分页操作 SpringBoot整合Mybatis进行分页操作,这里需要使用Mybatis的分页插件:pageHelper, 关于pageHelper的介绍,请查看官方文档: https://pagehelper.github.io/ 1.使用前配置 关于pageHelper的使用配置,主要有以下2个步骤: 1.1.在pom文件中导入pageHelper依赖 <dependency> <groupId>com.github.pagehelper&

mybatis + PageHelper 实现分页

如果你也在使用Mybatis,建议尝试PageHelper插件,这个一定是最方便使用的分页插件.该插件目前支持Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库分页.PageHelper分页插件项目中的正式代码一共有个5个Java文件,这5个文件的说明如下: ? 1:  Page<E>[必须]:分页参数类,该类继承ArrayList,虽然分页查询返回的结果实际类型是Page<E>,但是可以完全不出现所有的代码中,可以直接当成List

PageHelper实现分页

PageHelper实现分页 如果你也在用 MyBatis,建议尝试该分页插件,这一定是最方便使用的分页插件.分页插件支持任何复杂的单表.多表分页.--PageHelper官网. 后端实现 ? 引入依赖 使用PageHelper之前,我们要先引入其依赖文件,或者jar包.这里使用maven项目演示,所以需要先引入依赖文件. <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pa

pageHelper插件

mybatis的分页插件使用总结 环境准备工作:    1.在使用pagehelper插件时,我已经搭建好了ssm(spring+springmvc+mybatis) 在这简单描述一下ssm搭建过程 配置整体项目的web.xml 2,配置spring 对不同层的扫描(controller层在springmvc配置) 3,配置springmvc 主要配置controller层的扫描,视图层的解析等 <context:component-scan base-package="com.huhy.