• PageHelper实现分页


    PageHelper实现分页

    如果你也在用 MyBatis,建议尝试该分页插件,这一定是最方便使用的分页插件。分页插件支持任何复杂的单表、多表分页。——PageHelper官网。

    后端实现

    引入依赖

    使用PageHelper之前,我们要先引入其依赖文件,或者jar包。这里使用maven项目演示,所以需要先引入依赖文件。

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

    在MyBatis配置文件中添加插件

    使用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">
    <configuration>
    	<plugins>
    		<!-- com.github.pagehelper 为 PageHelper 类所在包名 -->
    		<plugin interceptor="com.github.pagehelper.PageHelper">
    			<!-- 支持数据库类型: Oracle,Mysql,MariaDB,SQLite,Hsqldb,PostgreSQL -->
    			<property name="dialect" value="mysql"/>
    		</plugin>
    	</plugins>
    </configuration>
    

    创建PageResult类

    使用分页时,往往会向前端传递总页数以及每页的内容,即total和List。鉴于在程序中我们会大量使用分页,所以实现分页的第一步就是创建一个PageResult类。

    此类中包含total、rows两个属性。由于该类中的rows不代指任一类型,所以无法指定泛型。

    如果要使用dubbo等RPC技术请务必实现Serializable接口。

    package entity;
    
    import java.io.Serializable;
    import java.util.List;
    
    /**
     * Created by rayfoo@qq.com Luna on 2020/4/13 0:44
     */
    public class PageResult implements Serializable {
        //总记录数
        private Long total;
        //当前页内容
        private List rows;
    
        public Long getTotal() {
            return total;
        }
    
        public void setTotal(Long total) {
            this.total = total;
        }
    
        public List getRows() {
            return rows;
        }
    
        public void setRows(List rows) {
            this.rows = rows;
        }
    
        public PageResult(Long total, List rows) {
            this.total = total;
            this.rows = rows;
        }
    
        public PageResult() {
        }
    }
    

    编写代码

    首先编写Controlelr层代码

    • 先创建一个findPage()方法,接收前端传递的需要查询的页码(PageNo)和每页数据的条目(PageSize)。
        @RequestMapping("/findPage")
        public PageResult findPage(Integer pageNo,Integer pageSize){
            return brandService.findPage(pageNo,pageSize);
        }
    

    在Service层也非常简单

    • 直接在查询所有的语句的上一行加上PageHelper.startPage(pageNo,pageSize);就可以实现分页查询。
    • 在查询所有时,需要将返回结果强转为Page对象。
          @Override
        public PageResult findPage(Integer pageNo, Integer pageSize) {
            //开启分页
            PageHelper.startPage(pageNo,pageSize);
            //查询数据
            Page<User> page = (Page<Brand>) userMapper.selectByExample(null);
            //返回结果
            return new PageResult(page.getTotal(),page.getResult());
        }
    

    测试

    此时,直接在前端调用localhost:8080/user/findPage?pageNo=1&pageSize=5即可获取第一页的五条数据。

  • 相关阅读:
    msvcr120.dll、msvcp120.dll注册失败
    Qt初级-Qt格式
    二级指针的申请与释放
    搜索指定目录下的所有文件或者指定文件(可用于多级目录)
    Java--多线程处理--模拟车辆进入入收费
    Sqlit--学习教程(建立数据库表)
    Sqlit--学习教程(基本操作1)
    Sqlit--学习教程()
    Sqlit--学习教程(命令)
    Sqlit--学习教程(简介)
  • 原文地址:https://www.cnblogs.com/zhangruifeng/p/12689011.html
Copyright © 2020-2023  润新知