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();
}

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
==>  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
}
相关文章
|
8月前
|
前端开发 Java 关系型数据库
基于Java+Springboot+Vue开发的鲜花商城管理系统源码+运行
基于Java+Springboot+Vue开发的鲜花商城管理系统(前后端分离),这是一项为大学生课程设计作业而开发的项目。该系统旨在帮助大学生学习并掌握Java编程技能,同时锻炼他们的项目设计与开发能力。通过学习基于Java的鲜花商城管理系统项目,大学生可以在实践中学习和提升自己的能力,为以后的职业发展打下坚实基础。技术学习共同进步
552 7
|
5月前
|
Java 数据库连接 API
Java 8 + 特性及 Spring Boot 与 Hibernate 等最新技术的实操内容详解
本内容涵盖Java 8+核心语法、Spring Boot与Hibernate实操,按考试考点分类整理,含技术详解与代码示例,助力掌握最新Java技术与应用。
181 2
|
8月前
|
前端开发 Java 物联网
智慧班牌源码,采用Java + Spring Boot后端框架,搭配Vue2前端技术,支持SaaS云部署
智慧班牌系统是一款基于信息化与物联网技术的校园管理工具,集成电子屏显示、人脸识别及数据交互功能,实现班级信息展示、智能考勤与家校互通。系统采用Java + Spring Boot后端框架,搭配Vue2前端技术,支持SaaS云部署与私有化定制。核心功能涵盖信息发布、考勤管理、教务处理及数据分析,助力校园文化建设与教学优化。其综合性和可扩展性有效打破数据孤岛,提升交互体验并降低管理成本,适用于日常教学、考试管理和应急场景,为智慧校园建设提供全面解决方案。
536 70
|
6月前
|
Java 数据库连接 API
Java 对象模型现代化实践 基于 Spring Boot 与 MyBatis Plus 的实现方案深度解析
本文介绍了基于Spring Boot与MyBatis-Plus的Java对象模型现代化实践方案。采用Spring Boot 3.1.2作为基础框架,结合MyBatis-Plus 3.5.3.1进行数据访问层实现,使用Lombok简化PO对象,MapStruct处理对象转换。文章详细讲解了数据库设计、PO对象实现、DAO层构建、业务逻辑封装以及DTO/VO转换等核心环节,提供了一个完整的现代化Java对象模型实现案例。通过分层设计和对象转换,实现了业务逻辑与数据访问的解耦,提高了代码的可维护性和扩展性。
269 1
|
6月前
|
SQL Java 数据库
解决Java Spring Boot应用中MyBatis-Plus查询问题的策略。
保持技能更新是侦探的重要素质。定期回顾最佳实践和新技术。比如,定期查看MyBatis-Plus的更新和社区的最佳做法,这样才能不断提升查询效率和性能。
279 1
|
7月前
|
安全 Java API
Spring Boot 功能模块全解析:构建现代Java应用的技术图谱
Spring Boot不是一个单一的工具,而是一个由众多功能模块组成的生态系统。这些模块可以根据应用需求灵活组合,构建从简单的REST API到复杂的微服务系统,再到现代的AI驱动应用。
|
6月前
|
Java 调度 流计算
基于Java 17 + Spring Boot 3.2 + Flink 1.18的智慧实验室管理系统核心代码
这是一套基于Java 17、Spring Boot 3.2和Flink 1.18开发的智慧实验室管理系统核心代码。系统涵盖多协议设备接入(支持OPC UA、MQTT等12种工业协议)、实时异常检测(Flink流处理引擎实现设备状态监控)、强化学习调度(Q-Learning算法优化资源分配)、三维可视化(JavaFX与WebGL渲染实验室空间)、微服务架构(Spring Cloud构建分布式体系)及数据湖建设(Spark构建实验室数据仓库)。实际应用中,该系统显著提升了设备调度效率(响应时间从46分钟降至9秒)、设备利用率(从41%提升至89%),并大幅减少实验准备时间和维护成本。
367 0