SpringBoot集成MyBatis的分页插件PageHelper实例代码

下面就为大家详细讲解“SpringBoot集成MyBatis的分页插件PageHelper实例代码”的完整攻略。

简介

在使用 MyBatis 进行数据库操作时,MySQL主要的限制在于分页查询。但是 Mybatis 配合 PageHelper 便可以轻松解决这个问题。本文将介绍如何在 SpringBoot 中使用 MyBatis 分页插件 PageHelper。

步骤

1. 添加依赖

pom.xml 文件中添加 PageHelper 和 MyBatis 的依赖:

<dependency>
  <groupId>com.github.pagehelper</groupId>
  <artifactId>pagehelper-spring-boot-starter</artifactId>
  <version>1.2.13</version>
</dependency>

<dependency>
  <groupId>org.mybatis.spring.boot</groupId>
  <artifactId>mybatis-spring-boot-starter</artifactId>
  <version>2.0.0</version>
</dependency>

2. 配置 PageHelper

application.yml 文件中添加以下配置:

pagehelper:
  helperDialect: mysql
  reasonable: true
  supportMethodsArguments: true
  params: count=countSql

3. 使用 PageHelper

在 DAO 层的查询方法上添加如下的分页查询配置:

import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;

public interface UserMapper {
  @Select("SELECT * FROM user")
  List<User> findAll();

  @Select("SELECT * FROM user WHERE id=#{id}")
  User findById(@Param("id") Long id);

  @Insert("INSERT INTO user(name, age, email) VALUES(#{name}, #{age}, #{email})")
  int insert(User user);

  @Update("UPDATE user SET name=#{name}, age=#{age}, email=#{email} WHERE id=#{id}")
  int update(User user);

  @Delete("DELETE FROM user WHERE id=#{id}")
  int delete(@Param("id") Long id);

  // 使用 PageHelper 动态分页查询
  @Select("SELECT * FROM user ORDER BY id")
  List<User> findAllByPage();

}

在 service 层中调用 PageHelper 对应的方法实现用户列表的分页查询:

@Service
public class UserServiceImpl implements UserService {

  @Autowired
  private UserMapper userMapper;

  @Override
  public PageInfo<User> findAllByPage(int pageNum, int pageSize) {
    PageHelper.startPage(pageNum, pageSize);
    List<User> userList = userMapper.findAllByPage();
    PageInfo<User> pageInfo = new PageInfo<>(userList);
    return pageInfo;
  }

}

4. 测试

@RunWith(SpringRunner.class)
@SpringBootTest
public class UserServiceTest {

  @Autowired
  private UserService userService;

  @Test
  public void testFindAllByPage() {
    PageInfo<User> pageInfo = userService.findAllByPage(1, 2);
    System.out.println("总记录数:" + pageInfo.getTotal());
    System.out.println("总页数:" + pageInfo.getPages());
    System.out.println("当前页码:" + pageInfo.getPageNum());
    System.out.println("每页记录数:" + pageInfo.getPageSize());
    System.out.println("结果集:" + pageInfo.getList());
  }

}

测试结果:

总记录数:4
总页数:2
当前页码:1
每页记录数:2
结果集:[User(id=1, name=Tom, age=20, email=tom@163.com), User(id=2, name=Jack, age=22, email=jack@163.com)]

另外,还可以使用注解的方式实现分页:

@Select("SELECT * FROM user")
@Options(useGeneratedKeys = true, keyProperty = "id")
List<User> getAllUserByPage(@Param("pageNum") int pageNum, @Param("pageSize") int pageSize);

注解方式和上面介绍的方法是等价的。

总结

本文介绍了在 SpringBoot 中如何集成 MyBatis 分页插件 PageHelper,以及两种不同的使用方式。PageHelper 在实际项目中使用非常方便,可以节省大量的代码量和时间。希望本文能对大家有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:SpringBoot集成MyBatis的分页插件PageHelper实例代码 - Python技术站

(0)
上一篇 2023年6月16日
下一篇 2023年6月16日

相关文章

  • Filter、Servlet、Listener的学习_动力节点Java学院整理

    Filter、Servlet、Listener的学习攻略 一、什么是Filter Filter又称过滤器,是Java Web中一种很重要的组件。Filter的主要作用是在 Servlet容器的请求与资源(例如 Servlet、JSP等)之间加一个拦截器,对请求进行预处理,也可以对响应做出后处理。 Filter是Servlet API中最实用的技术之一,它非常…

    Java 2023年6月15日
    00
  • JavaSE文件操作工具类FileUtil详解

    JavaSE文件操作工具类FileUtil详解 简介 JavaSE中提供了File类用来操作文件或目录。但是,操作文件或目录的流程较为繁琐,如果我们需要经常操作文件或目录,就需要编写大量的重复代码。为了解决这个问题,我们可以将文件操作的常用方法封装在一个工具类中,从而减少代码量和提高开发效率。本文将介绍一个JavaSE文件操作的工具类FileUtil。 Fi…

    Java 2023年5月19日
    00
  • java中URLEncoder.encode与URLDecoder.decode处理url特殊参数的方法

    下面是 Java 中 URLEncode 和 URLDecode 处理 URL 特殊参数的完整攻略。 URLEncode 和 URLDecode 概述 在 URL 中,有一些字符是有特殊意义的,例如问号、等号、百分号等,如果要在 URL 中传递这些特殊字符,需要进行编码和解码操作,否则会导致 URL 出现错误。 URLEncode 操作就是将传入的字符串进行…

    Java 2023年5月20日
    00
  • SpringMVC Json自定义序列化和反序列化的操作方法

    SpringMVC Json自定义序列化和反序列化的操作方法 在SpringMVC中,我们可以使用注解@ResponseBody将一个Java对象转换为JSON格式的字符串进行传输,但是在某些场景下,我们可能需要对Java对象进行自定义的序列化和反序列化操作,以满足特定的需求。 自定义序列化 自定义序列化的实现,一般通过实现Spring提供的JsonSeri…

    Java 2023年5月26日
    00
  • 关于SpringBoot中controller参数校验的使用

    对于SpringBoot中的参数校验,我们可以使用JSR-303规范提供的注解对Controller层的方法参数进行校验。具体实现方式如下: 引入依赖 首先需要引入spring-boot-starter-validation依赖,可以在pom.xml文件中添加以下依赖: <dependency> <groupId>org.spring…

    Java 2023年5月20日
    00
  • WINDOWS系统 + Apache +PHP5 +Zend + MySQL + phpMyAdmin安装配置方法

    安装和配置WINDOWS系统 + Apache + PHP5 + Zend + MySQL + phpMyAdmin的步骤如下: 步骤一:安装Apache 1.下载Apache的Windows版本,建议使用官方的Apache Lounge版本,下载地址https://www.apachelounge.com/download/ 2.解压缩下载的安装包。 3.…

    Java 2023年6月16日
    00
  • Java中线程状态+线程安全问题+synchronized的用法详解

    下面是Java中线程状态、线程安全问题以及synchronized的用法详解,包含示例说明: Java中线程状态 Java中的线程状态主要有以下五种: 新建状态(New):线程对象被创建后,但还没有调用start()方法时,线程处于新建状态。 运行状态(Runnable):当线程对象调用start()方法后,线程就处于运行状态。在运行状态下,线程会不断地执行…

    Java 2023年5月19日
    00
  • IDEA 离线迁移Springboot工程的方法步骤

    下面我将为你详细讲解“IDEA 离线迁移Springboot工程的方法步骤”的攻略。 一、离线环境准备 在没有网络的情况下,我们需要先将工程所需的依赖预先下载到本地。具体的步骤如下: 首先在有网络的环境下,利用 maven 将所需的依赖下载到本地。在控制台执行命令: mvn dependency:copy-dependencies 这会将所需依赖下载到${b…

    Java 2023年5月20日
    00
合作推广
合作推广
分享本页
返回顶部