Java:Springboot整合PageHelper实现分页

简介: Java:Springboot整合PageHelper实现分页

项目结构

测试代码:https://github.com/mouday/SpringBoot-MyBaits-PageHelper

新建SpringBoot项目

$ tree
.
├── pom.xml
└── src
    ├── main
    │   ├── java
    │   │   └── com
    │   │       └── example
    │   │           └── demo
    │   │               ├── Application.java
    │   │               ├── bean
    │   │               │   ├── RequestPage.java
    │   │               │   └── User.java
    │   │               ├── controller
    │   │               │   └── UserController.java
    │   │               ├── dao
    │   │               │   └── UserDao.java
    │   │               └── service
    │   │                   ├── UserService.java
    │   │                   └── impl
    │   │                       └── UserServiceImpl.java
    │   └── resources
    │       └── application.properties
    └── test

依赖和配置

pom.xml

<!--MyBatis-->
<dependency>
    <groupId>org.mybatis.spring.boot</groupId>
    <artifactId>mybatis-spring-boot-starter</artifactId>
    <version>2.1.3</version>
</dependency>
<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <scope>runtime</scope>
</dependency>
<!--分页插件-->
<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.13</version>
</dependency>
<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>

application.properties

spring.datasource.url=jdbc:mysql://localhost:3306/data
spring.datasource.username=root
spring.datasource.password=123456
mybatis.configuration.log-impl=org.apache.ibatis.logging.stdout.StdOutImpl

表结构

CREATE TABLE `user` (
  `id` int(13) NOT NULL AUTO_INCREMENT COMMENT '主键',
  `name` varchar(33) DEFAULT NULL COMMENT '姓名',
  `age` int(3) DEFAULT NULL COMMENT '年龄',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

相关代码

User.java

package com.example.demo.bean;
import lombok.Data;
@Data
public class User {
    private Integer id;
    private String name;
    private Integer age;
}

RequestPage.java

package com.example.demo.bean;
import org.springframework.util.StringUtils;
/**
 * 分页所需参数
 */
public class RequestPage {
    private Integer page;
    private Integer size;
    /**
     * 页码,为非必传参数,默认值为 1
     */
    public Integer getPage() {
        return StringUtils.isEmpty(page) ? 1 : page;
    }
    public void setPage(Integer page) {
        this.page = page;
    }
    /**
     * 大小,非必传参数,默认值为 10
     */
    public Integer getSize() {
        return StringUtils.isEmpty(size) ? 10 : size;
    }
    public void setSize(Integer size) {
        this.size = size;
    }
}

UserDao.java

package com.example.demo.dao;
import com.example.demo.bean.User;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
@Mapper
public interface UserDao {
    @Select("select * from user")
    Page<User> selectAllUserPage();
    @Select("select * from user")
    List<User> selectAllUserList();
}

UserService.java

package com.example.demo.service;
import com.example.demo.bean.User;
import com.github.pagehelper.Page;
import java.util.List;
public interface UserService {
    Page<User> selectAllUserPage();
    List<User> selectAllUserList();
}

UserServiceImpl.java

package com.example.demo.service.impl;
import com.example.demo.bean.User;
import com.example.demo.dao.UserDao;
import com.example.demo.service.UserService;
import com.github.pagehelper.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserServiceImpl implements UserService {
    @Autowired
    UserDao userDao;
    @Override
    public Page<User> selectAllUserPage() {
        return userDao.selectAllUserPage();
    }
    @Override
    public List<User> selectAllUserList() {
        return userDao.selectAllUserList();
    }
}

UserServiceImpl.java

package com.example.demo.service.impl;
import com.example.demo.bean.User;
import com.example.demo.dao.UserDao;
import com.example.demo.service.UserService;
import com.github.pagehelper.Page;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.List;
@Service
public class UserServiceImpl implements UserService {
    @Autowired
    UserDao userDao;
    @Override
    public Page<User> selectAllUserPage() {
        return userDao.selectAllUserPage();
    }
    @Override
    public List<User> selectAllUserList() {
        return userDao.selectAllUserList();
    }
}

UserController.java

package com.example.demo.controller;
import com.example.demo.bean.RequestPage;
import com.example.demo.bean.User;
import com.example.demo.service.UserService;
import com.github.pagehelper.Page;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.List;
@RestController
public class UserController {
    @Autowired
    UserService userService;
    /**
     * 返回数据列表和分页信息
     * @param requestPage
     * @return
     */
    @GetMapping("selectAllUserPage")
    public PageInfo<User> selectAllUserPage(RequestPage requestPage){
        PageHelper.startPage(requestPage.getPage(), requestPage.getSize());
        Page<User> page = userService.selectAllUserPage();
        PageInfo<User> pageInfo = new PageInfo<>(page);
        return pageInfo;
    }
    /**
     * 返回数据列表
     * @param requestPage
     * @return
     */
    @GetMapping("selectAllUserList")
    public List<User> selectAllUserList(RequestPage requestPage){
        PageHelper.startPage(requestPage.getPage(), requestPage.getSize());
        List<User> list = userService.selectAllUserList();
        return list;
    }
}

访问测试

GET http://localhost:8080/selectAllUserList?page=2&size=1
[
    {
        id: 2,
        name: "Tom",
        age: 25
    }
]

执行sql

==>  Preparing: SELECT count(0) FROM user
==> Parameters: 
<==    Columns: count(0)
<==        Row: 2
<==      Total: 1
==>  Preparing: select * from user LIMIT ?, ?
==> Parameters: 1(Integer), 1(Integer)
<==    Columns: id, name, age, money
<==        Row: 2, Tom, 25, 30.5
<==      Total: 1
GET http://localhost:8080/selectAllUserPage?page=2&size=1
{
    total: 2,
    list: [
        {
            id: 2,
            name: "Tom",
            age: 25
        }
    ],
    pageNum: 2,
    pageSize: 1,
    size: 1,
    startRow: 2,
    endRow: 2,
    pages: 2,
    prePage: 1,
    nextPage: 0,
    isFirstPage: false,
    isLastPage: true,
    hasPreviousPage: true,
    hasNextPage: false,
    navigatePages: 8,
    navigatepageNums: [
        1,
        2
    ],
    navigateFirstPage: 1,
    navigateLastPage: 2
}
==>  Preparing: SELECT count(0) FROM user
==> Parameters: 
<==    Columns: count(0)
<==        Row: 2
<==      Total: 1
==>  Preparing: select * from user LIMIT ?, ?
==> Parameters: 1(Integer), 1(Integer)
<==    Columns: id, name, age, money
<==        Row: 2, Tom, 25, 30.5
<==      Total: 1

参考

springboot整合pagehelper实现分页

相关文章
|
SQL Java 数据库
springboot整合pagehelper
在日常工作中怎么分页呢?咱们可以在sql里面拼接limit,但是这样是不是有点low,所以我又访问了一下伟大的百度,又知道了一个插件pagehelper,那么下面介绍一下pagehelper。
191 0
springboot整合pagehelper
|
关系型数据库 Java MySQL
SpringBoot(十二)_springboot整合PageHelper
我之所以会发现这个PageHelper这个东东 是因为公司在使用 ,刚开始我也没太注意这个插件,感觉不就是个分页插件吗?也就那样,直到一天,我在网上找了个代码生成器,用来构建代码,因为它是针对mysql的,我们公司使用的是pgsql,它们的分页是不同的。
2452 0
|
2月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 实现动态路由和菜单功能,快速搭建前后端分离的应用框架。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,包括版本兼容性、安全性、性能调优等方面。
166 1
|
3月前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的服装商城管理系统
基于Java+Springboot+Vue开发的服装商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的服装商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
176 2
基于Java+Springboot+Vue开发的服装商城管理系统
|
3月前
|
前端开发 JavaScript Java
SpringBoot项目部署打包好的React、Vue项目刷新报错404
本文讨论了在SpringBoot项目中部署React或Vue打包好的前端项目时,刷新页面导致404错误的问题,并提供了两种解决方案:一是在SpringBoot启动类中配置错误页面重定向到index.html,二是将前端路由改为hash模式以避免刷新问题。
268 1
|
1月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个具有动态路由和菜单功能的前后端分离应用。首先,创建并配置 Spring Boot 项目,实现后端 API;然后,使用 Ant Design Pro Vue 创建前端项目,配置动态路由和菜单。通过具体案例,展示了如何快速搭建高效、易维护的项目框架。
108 62
|
1月前
|
JavaScript 安全 Java
如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能
本文介绍了如何使用 Spring Boot 和 Ant Design Pro Vue 构建一个前后端分离的应用框架,实现动态路由和菜单功能。首先,确保开发环境已安装必要的工具,然后创建并配置 Spring Boot 项目,包括添加依赖和配置 Spring Security。接着,创建后端 API 和前端项目,配置动态路由和菜单。最后,运行项目并分享实践心得,帮助开发者提高开发效率和应用的可维护性。
62 2
|
1月前
|
JavaScript Java 项目管理
Java毕设学习 基于SpringBoot + Vue 的医院管理系统 持续给大家寻找Java毕设学习项目(附源码)
基于SpringBoot + Vue的医院管理系统,涵盖医院、患者、挂号、药物、检查、病床、排班管理和数据分析等功能。开发工具为IDEA和HBuilder X,环境需配置jdk8、Node.js14、MySQL8。文末提供源码下载链接。
|
3月前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的大学竞赛报名管理系统
基于Java+Springboot+Vue开发的大学竞赛报名管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的大学竞赛报名管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
230 3
基于Java+Springboot+Vue开发的大学竞赛报名管理系统
|
3月前
|
前端开发 JavaScript Java
基于Java+Springboot+Vue开发的蛋糕商城管理系统
基于Java+Springboot+Vue开发的蛋糕商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的蛋糕商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。
172 3
基于Java+Springboot+Vue开发的蛋糕商城管理系统