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

yizhihongxing

下面就为大家详细讲解“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在并发环境中SimpleDateFormat多种解决方案

    Java中的SimpleDateFormat类是一个非线程安全的日期格式化工具,在并发环境中使用它可能会导致线程安全问题和性能问题。因此,我们需要对其进行一些处理,以便在多线程环境中使用。 下面是Java在并发环境中SimpleDateFormat多种解决方案的完整攻略: 方案一:使用ThreadLocal ThreadLocal是一种可以在多线程环境中正确…

    Java 2023年6月1日
    00
  • SpringBoot 项目的创建与启动步骤详解

    SpringBoot 项目的创建与启动步骤详解 1. 准备工作 在开始创建SpringBoot项目之前,需要先准备好以下工具: JDK8或以上版本(推荐使用JDK11),需要安装并配置好环境变量。 Maven或Gradle,用于构建项目。 IDE,如Intellij IDEA或Eclipse等。 2. 创建SpringBoot项目 2.1 使用SpringB…

    Java 2023年5月19日
    00
  • java学习:日期的运算代码

    下面是“Java学习:日期的运算代码”的完整攻略。 Markdown格式化代码 为了更好地展示代码块,请使用Markdown格式化。 可以使用三个反引号包裹代码块,例如: // 这是Java的示例代码 public static void main(String[] args) { System.out.println("Hello World!&…

    Java 2023年5月20日
    00
  • java web开发之购物车功能实现示例代码

    下面是关于“Java Web开发之购物车功能实现示例代码”的完整攻略。 一、需求分析这个任务要求我们开发一个在线购物网站,并实现购物车功能。购物车需要实现添加商品、移除商品以及结算等操作。 二、技术选型和建立项目基于以上需求,可以决定使用Java Web技术实现网站和购物车功能,并建立一个Maven项目。这里以Spring MVC为例。 三、数据库设计数据库…

    Java 2023年5月30日
    00
  • Java获取当前时间戳案例详解

    标题 Java获取当前时间戳案例详解 介绍 本文主要讲解如何使用Java获取当前时间戳的方法,并提供两个示例。时间戳是一种计算机时间的表示方法,它表示从1970年1月1日0点0分0秒(UTC,即格林威治标准时间)到现在所经过的秒数。 获取当前时间戳的方法 Java中获取当前时间戳的方法有两种: 1.使用Java标准库提供的System.currentTime…

    Java 2023年5月20日
    00
  • jsp实现登录验证的过滤器

    下面是关于“jsp实现登录验证的过滤器”的完整攻略: 一、过滤器的介绍 过滤器是Servlet 2.3版本之后新增的一种组件。其作用是在客户端发送请求到Servlet之前或者在Servlet响应客户端请求之后,对请求和响应进行拦截和处理。过滤器可以拦截多个Servlet,因此可以将与特定任务相关的处理放在一个过滤器中进行处理,提高程序的可维护性和可重用性。 …

    Java 2023年6月15日
    00
  • Tomcat 是如何管理Session的方法示例

    Tomcat 是一个流行的 Java Web 服务器,可以通过 Session 技术实现 Web 应用程序的状态管理。下面我们来详细讲解 Tomcat 是如何管理 Session 的方法示例。 1. 使用 HTTPSession 接口 Tomcat 通过内置的 HTTPSession 接口来管理 Session。若要在应用程序中使用 Session,可以通过…

    Java 2023年5月19日
    00
  • struts2通过action返回json对象

    实现Struts2通过Action返回JSON对象,可以按照以下步骤进行操作: 步骤一:导入依赖 在项目的pom.xml中导入struts2-json-plugin依赖,以便能够支持JSON格式的数据: <dependency> <groupId>org.apache.struts</groupId> <artifa…

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