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日

相关文章

  • java时间戳转日期格式的实现代码

    下面是Java时间戳转日期格式的实现代码的完整攻略。 问题背景 时间戳是指从某个固定时间(如 1970年1月1日00:00:00 UTC)起经过的毫秒数,通常用于记录某个时间点的信息。在Java开发中,我们经常需要将时间戳转换为可读的日期格式,以便于显示、存储等操作。 实现步骤 Java提供了多种方式将时间戳转化为日期格式,最常用的方式是使用SimpleDa…

    Java 2023年5月20日
    00
  • .Net集成敏感词组件的步骤

    针对“.Net集成敏感词组件的步骤”的完整攻略,我将从以下几个方面来进行详细的讲解: 确认需求和选择组件 下载和安装组件 集成敏感词组件到项目中 测试敏感词过滤功能 1. 确认需求和选择组件 在集成敏感词组件之前,我们首先需要确认项目中敏感词过滤的需求。比如:需要过滤哪些内容、过滤的规则等。确认好需求之后,就可以根据需求选择一个合适的敏感词组件。 目前比较常…

    Java 2023年6月15日
    00
  • 创建Spring Boot项目的几种方式总结(推荐)

    创建Spring Boot项目的方式有很多种,但是有些方式比较复杂或者不太实用。下面是一些比较好用的方式。 1. 使用Spring Initializr创建项目 Spring Initializr是官方提供的一个创建Spring Boot项目的可视化工具,非常方便。使用Spring Initializr创建Spring Boot项目的步骤如下: 打开Spri…

    Java 2023年5月15日
    00
  • java.lang.ExceptionInInitializerError异常的解决方法

    当在Java应用程序中使用静态代码块或静态变量时,可能会出现java.lang.ExceptionInInitializerError异常。该异常是由于在静态代码块或静态变量赋值期间抛出异常而导致的。 在解决此异常的过程中,需要扫描静态块或静态变量的代码,找出其中可能引起错误的部分,并对其进行调试修复。 以下是解决java.lang.ExceptionInI…

    Java 2023年5月27日
    00
  • java中Pulsar InterruptedException 异常

    Java中Pulsar InterruptedException 异常 当使用Pulsar客户端在Java中进行操作时,可能会遇到InterruptedException异常。在本文中,我们将对该异常进行详细的讲解,包括该异常的原因、如何处理以及代码示例。 什么是InterruptedException异常 InterruptedException是Java…

    Java 2023年5月27日
    00
  • 在JSP中访问数据库大全

    以下是在JSP中访问数据库的完整攻略: 1. 准备工作 要在JSP中访问数据库,首先需要安装JDBC驱动和配置数据库连接信息。 下载对应数据库的JDBC驱动jar包,将其放置于Web应用的WEB-INF/lib目录下 在Web应用的WEB-INF目录下创建一个名为web.xml的文件,并在其中配置数据库连接信息,比如连接地址、用户名、密码等 <!– …

    Java 2023年6月15日
    00
  • Spring Boot非Web项目运行配置的方法教程

    下面我将详细讲解“Spring Boot非Web项目运行配置的方法教程”的完整攻略。 1. 背景介绍 Spring Boot是一款非常流行的基于Spring Framework的开发框架,它可以让我们快速地构建Web应用程序,但是很多人可能不知道,Spring Boot其实也可以用于构建非Web项目,例如后台服务、批处理等。 2. Spring Boot非W…

    Java 2023年5月20日
    00
  • Lambda表达式的使用及注意事项

    Lambda表达式是Java8新引入的一种语法形式,可以用于简洁地定义匿名函数,常用于对集合进行筛选、映射等操作。下面将详细讲解Lambda表达式的使用及注意事项。 Lambda表达式的语法 Lambda表达式由三部分组成:参数列表、箭头符号和表达式或语句块。其基本格式为: (参数列表) -> {表达式或语句块} 例如,下面是一个Lambda表达式的例…

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