项目中PageHelper分页插件的使用实例(SSM)

分页(英语:Paging),是一种操作系统里存储器管理的一种技术,可以使计算机的主存可以使用存储在辅助存储器中的数据。操作系统会将辅助存储器(通常是磁盘)中的数据分区成固定大小的区块,称为“页”(pages)。当不需要时,将分页由主存(通常是内存)移到辅助存储器;当需要时,再将数据取回,加载主存中。相对于分段,分页允许存储器存储于不连续的区块以维持文件系统的整齐。[1]分页是磁盘和内存间传输数据块的最小单位。

分页/虚拟内存能有助“大大地”降低整体及额外非必要的 I/O 次数,提高系统整体运作性能。因为这能有助提高 RAM 的读取命中率,也透过其内部的高效率算法来达到 I/O 数据流的预缓存工作,通过与之相关的等等手段也能很好地提高了 CPU 的使用效率,而拥有大物理内存的用户更可能考虑利用如Ramdisk、Supercache、SoftPerfect RAM Disk等模拟出硬盘分区来同时将虚拟内存/系统临时文件等设置其上以进一步加强系统性能,及达至保障硬盘的措施。分页是虚拟内存技术中的重要部分。
1 .分页原理

这里写图片描述

使用原理:

pageHelper会使用ThreadLocal获取到同一线程中的变量信息,各个线程之间的Threadlocal不会相互干扰,也就是Thread1中的ThreadLocal1之后获取到Tread1中的变量的信息,不会获取到Thread2中的信息

所以在多线程环境下,各个Threadlocal之间相互隔离,可以实现,不同thread使用不同的数据源或不同的Thread中执行不同的SQL语句

所以,PageHelper利用这一点通过拦截器获取到同一线程中的预编译好的SQL语句之后将SQL语句包装成具有分页功能的SQL语句,并将其再次赋值给下一步操作,所以实际执行的SQL语句就是有了分页功能的SQL语句

2 .项目中引入分页插件

插件叫做PageHelper,如果你也在用Mybatis,建议尝试该分页插件,这个一定是最方便使用的分页插件。
该插件目前支持Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL六种数据库分页。

第一步:引入maven依赖

//放置在dao层pom.xml配置中
    <dependency>
        <groupId>com.github.pagehelper</groupId>
        <artifactId>pagehelper</artifactId>
        <version>4.0.0</version>
    </dependency>

第二步:在spring-jdbc.xml文件中进行配置(数据源配置xml文件),引入插件

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dataSource"/>
        <property name="typeAliasesPackage" value="相应包路劲,多个用逗号隔开"/>
        <property name="mapperLocations"
                  value="classpath*:/com/test/**/mapper/**/*Mapper.xml"></property>
        <!--在sqlSessionFactory中引入该插件-->
        <property name="plugins">
            <array>
                <bean class="com.github.pagehelper.PageInterceptor">
                    <property name="properties">
                        <value>
                            helperDialect=mysql
                        </value>
                    </property>
                </bean>
            </array>
        </property>
    </bean>

第三步:获取分页参数和数据

//pageNum展示哪一页,pageSize每一页展示的条数
    public PageInfo<DemoDO> getALLDemoInfo(int pageNum,int pageSize) {
            //使用时,先执行PageHelper.startPage(pageNum,pageSize)
            PageHelper.startPage(pageNum,pageSize);
            List<StaticDO> lists = staticDAO.getALLDemoInfo();
            //将获取的数据封装为 PageInfo对象即可
            PageInfo<DemoDO> pageInfo = new PageInfo<>(lists);
     
            return pageInfo;
        }

第四步:前端展示

//自定义一个分页参数对象,用于接收分页参数数据
    public class BasePageResult implements Serializable {
        //条数
        private int pageSize;
        //页数
        private int pages;
        //符合要求的数据条数
        private int total;
        //当前页,例如第一页,第二页。。。
        private int pageNum;
     
        public BasePageResult() {
        }
     
        public int getPageSize() {
            return this.pageSize;
        }
     
        public void setPageSize(int pageSize) {
            this.pageSize = pageSize;
        }
     
        public int getPages() {
            return this.pages;
        }
     
        public void setPages(int pages) {
            this.pages = pages;
        }
     
        public int getTotal() {
            return this.total;
        }
     
        public void setTotal(int total) {
            this.total = total;
        }
     
        public int getPageNum() {
            return this.pageNum;
        }
     
        public void setPageNum(int pageNum) {
            this.pageNum = pageNum;
        }
    }

数据转换,参数接收:

//使用lombook注解Data代替set和get
    @Data
    public class DemoVO extends BasePageResult implements Serializable {
        //数据集合
        private List<DemoItemVO> demoItemVOList;
     
    }

实战:

测试类:

/**
     * @description: 测试类
     * @author: fengze
     * @create: 2018-09-14 14:45
     **/
    public class DemoServiceTest extends BaseTest {
        @Resource
        private DemoService demoService;
     
        @Test
        public void testGetDemoByPage(){
            PageInfo<DemoDO> info = demoService.getDemoByPage(1, 10);
            logger.info("body:{}", JSON.toJSON(info));
        }
     
      
    }
     
    /**
     * @description: service
     * @author: fengze
     * @create: 2018-09-13 15:21
     **/
    @Service("demoService")
    public class DemoServiceImpl extends BaseService implements DemoService{
     
        @Autowired
        private DemoDAO demoDAO;
     
     
        /*获取当前符合要求的分页数据*/
        @Override
        public PageInfo<DemoDO> getDemoByPage(int pageNum,int pageSize) {
            /*获取全量静态酒店*/
            PageHelper.startPage(pageNum,pageSize);
            List<DemoDO> lists = demoDAO.getDemoByPage();
            PageInfo<DemoDO> pageInfo = new PageInfo<>(lists);
     
            return pageInfo;
        }
    }
     
    /**持久层*/
     
    @Repository
    public interface DemoDAO {
     
        List<DemoDO> getDemoByPage();
     
        
    }
     
     
    <!--mapper配置,BaseResultMap自动映射,需要获取的字段-->
    <sql id="Base_Column_List">
        id, name, business, addr,  create_time, update_time, is_delete
      </sql>
     
     
    <select id="getDemoByPage" resultMap="BaseResultMap">
        select
        <include refid="Base_Column_List"/>
        from demo
      </select>

---------------------
作者:狂丰
来源:CSDN
原文:https://blog.csdn.net/fz13768884254/article/details/82735863
版权声明:本文为博主原创文章,转载请附上博文链接!

原文地址:https://www.cnblogs.com/yangshuyuan1009/p/10985115.html

时间: 2024-10-08 15:24:28

项目中PageHelper分页插件的使用实例(SSM)的相关文章

SpringBoot+Mybatis配置Pagehelper分页插件实现自动分页

SpringBoot+Mybatis配置Pagehelper分页插件实现自动分页 **SpringBoot+Mybatis使用Pagehelper分页插件自动分页,非常好用,不用在自己去计算和组装了.全部自动实现. 话不多说,直接上代码: 第一步pom文件配置添加jar: <!-- mybatis的分页插件 --> <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>

逆向工程文件example完美结合使用PageHelper分页插件及分页不成功原因

原生的mybatis需要手写sql语句,项目数据库表多了之后,可以让你写sql语句写到手软,于是mybatis官方提供了mybatis-generator:mybatis逆向工程代码生成工具,用于简化mybatis单表操作. 在PageHelper3.几的版本的时候,使用它对逆向工程生成的查询方法进行分页时出现失效的情况,而PageHelper4开始,亲测能够与mybatis逆向工程生成的方法完美兼容,今天就和大家分享spring+springmvc+mybatis+PageHelper的项目遇

SpringBoot整合Pagehelper分页插件

在web开发中,数据的分页是必不可少的.Pagehelper分页插件很强大,虽说平时我们不需要用到它的很多功能,但是了解下还是有必要的. 官网:https://pagehelper.github.io/ 注:在 MyBatis下使用. 一.Pagehelper分页插件介绍 原文地址:https://www.cnblogs.com/myitnews/p/12349655.html

5、SpringBoot+MyBaits+Maven+Idea+pagehelper分页插件

1.为了我们平时方便开发,我们可以在同一个idea窗口创建多个项目模块,创建方式如下 2.项目中pom.xm文件的内容如下 1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance&qu

pageHelper分页插件使用总结

1.添加jar包货添加pom文件 <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>4.0.0</version> </dependency>2.添加插件配置在mybatis-config配置文件中添加插件<configuration> <!--

PageHelper分页插件

在mybatis配置文件(SqlMapConfig.xml)中配置 <?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"> <configurat

pageHelper 分页插件使用

第一步:引入pageHelper的jar包. 第二步:需要在SqlMapConfig.xml中配置插件. <?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"

PageHelper分页插件及通用分页js

 分页概述 1.物理分页 物理分页依赖的是某一物理实体,这个物理实体就是数据库,比如MySQL数据库提供了limit关键字,程序员只需要编写带有limit关键字的SQL语句,数据库返回的就是分页结果.建议使用. 2.逻辑分页 逻辑分页依赖的是程序员编写的代码.数据库返回的不是分页结果,而是全部数据,然后再由程序员通过代码获取分页数据,常用的操作是一次性从数据库中查询出全部数据并存储到List集合中,因为List集合有序,再根据索引获取指定范围的数据. MyBatis 分页插件 - PageHel

springboot集成pagehelper分页插件

之前写的项目都是在前端进行分页,最近涉及到后台分页查询,回看自己之前练习的项目里发现自己写了分页给忘了,作为初级程序员拿来记录一下 引入pagehelper的pom依赖 <dependency> <groupId>com.github.pagehelper</groupId> <artifactId>pagehelper</artifactId> <version>4.1.0</version> </dependen