栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

MyBatis笔记(四)SpringBoot整合Mybatis+PageHelper实现分页查询

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

MyBatis笔记(四)SpringBoot整合Mybatis+PageHelper实现分页查询

目录
    • 一、背景
    • 二、maven依赖
    • 三、配置
      • 3.1、application.yml配置
      • 3.2、mybatis.xml
    • 四、Mapper
      • 4.1、EmployeeMapper.java
      • 4.2、EmployeeMapper.xml
    • 五、测试

一、背景

   PageHelper 是一款好用的开源免费的 MyBatis 第三方物理分页插件,功能非常的强大,使用也非常的简单。本文的主要介绍 SpringBoot 整合 MyBatis + PageHelper 实现分页查询,如果对于 MyBatis 基本使用不了解的可以参考我之前的文章:

MyBatis笔记(一)Spring Boot整合MyBatis实现增删查改详解(入门版)
MyBatis笔记(二)MyBatis参数传递详解
MyBatis笔记(三)MyBatis动态SQL详解

二、maven依赖

pom.xml



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.5.2
         
    
    com.alian
    mybatis-pagehelper
    0.0.1-SNAPSHOT
    mybatis-pagehelper
    Spring Boot整合MyBatis分页功能

    
        1.8
    
    

        
            org.springframework.boot
            spring-boot-starter-web
            2.5.2
        

        
            org.springframework.boot
            spring-boot-starter-data-jpa
            2.5.2
        

        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            2.1.4
        

        
            com.alibaba
            druid-spring-boot-starter
            1.2.6
        

        
        
            com.github.pagehelper
            pagehelper-spring-boot-starter
            1.4.0
        

        
            mysql
            mysql-connector-java
            8.0.26
            runtime
        

        
        
            org.projectlombok
            lombok
            1.18.20
        

        
        
            org.springframework.boot
            spring-boot-test
            2.5.2
        

        
        
            org.springframework
            spring-test
            5.3.8
        

        
        
            junit
            junit
            ${junit.version}
        

    

    
        
            
                org.springframework.boot
                spring-boot-maven-plugin
            
        
    


  这里最重要的依赖就是下面这个,它就是实现分页的核心依赖。

 
 
     com.github.pagehelper
     pagehelper-spring-boot-starter
     1.4.0
 
三、配置 3.1、application.yml配置

application.yml

server:
  port: 8081
  servlet:
    context-path: /pagehelper

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    type: com.alibaba.druid.pool.DruidDataSource
    username: test
    password: Test!@34
    url: jdbc:mysql://192.168.0.139:3306/test?characterEncoding=utf8&useUnicode=true&useSSL=false&zeroDateTimeBehavior=convertToNull&autoReconnect=true&allowMultiQueries=true&failOverReadonly=false&connectTimeout=6000&maxReconnects=5
    initialSize: 5
    minIdle: 5
    maxActive: 20

mybatis:
  config-location: classpath:config/mybatis.xml
  mapper-locations: classpath:mapper/*.xml
  type-aliases-package: com.alian.pagehelper.dto

  我这里使用druid作为数据源, MyBatis 的整合不清楚的可以参考我开篇的提到的文章。

3.2、mybatis.xml

mybatis.xml


		


	
	
	
	
	
	
	
	
	
	



  因为是Spring Boot 项目整合的,所以我不用去加pagehelper插件:

	
		
			
			
			
			
		
	

不然就会出现如下错误:

org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException: 
### Error querying database.  Cause: java.lang.RuntimeException: 在系统中发现了多个分页插件,请检查系统配置!
### Cause: java.lang.RuntimeException: 在系统中发现了多个分页插件,请检查系统配置!

  当然你这时可以通过在主类上加上 @SpringBootApplication(exclude = PageHelperAutoConfiguration.class)进行过滤配置,但是 SpringBoot本身就是为了减少配置而来的,你这样加了一个又加一个,说白了还是不符合 SpringBoot 设计原则,所以那个plugin就不用配置了。

四、Mapper 4.1、EmployeeMapper.java

EmployeeMapper.java

package com.alian.pagehelper.mapper;

import com.alian.pagehelper.dto.EmployeeDto;
import org.apache.ibatis.annotations.Param;

import java.util.List;

public interface EmployeeMapper {

    
    List selectPageByDepartment(@Param("department") String department);
}
4.2、EmployeeMapper.xml

EmployeeMapper.xml