springBoot使用mybatis-plus插件实现分页过程

 更新时间:2026年04月26日 10:58:37   作者:千反田真的打不过我  
本文介绍了MyBatisPlus的集成步骤,包括项目结构调整、pom.xml依赖添加、MyBatisPlusConfig配置文件创建与配置、具体代码实现(controller、service、dao、xml)、SQL结果打印、自定义分页等环节,此经验总结供读者参考学习

一、项目结构

二、pom.xml 依赖添加 

(这里我是加在krystal_dao的pom.xml里面,单个项目,直接加在pom.xml,多模块根据自己项目情况添加)

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus</artifactId>
    <version>3.0-beta</version>
</dependency>

三、新建MyBatisPlusConfig.java

(这里我用专门一个模块添加一些功能代码,里面依赖自己根据报错添加进去即可)

package com.dm.krystal.core.config;
import com.baomidou.mybatisplus.extension.plugins.PaginationInterceptor;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @author krystal
 */
@Configuration
/*@MapperScan("com.dm.krystal")*/ /*  KrystalApiApplication在启动文件上写了,这里不加*/
public class MyBatisPlusConfig {
    /**
     * mybatis-plus分页插件
     */
    @Bean
    public PaginationInterceptor paginationInterceptor() {
        PaginationInterceptor paginationInterceptor = new PaginationInterceptor();
        return paginationInterceptor;
    }
}

四、具体代码实现

1.controller  

IPage<ExaminationPaperRelevancePO>  pageData = examinationPaperRelevanceService.getExaminationPaperPageByQueryVO(page,examinationPaperQueryVO);

2.service

IPage<ExaminationPaperRelevancePO> getExaminationPaperPageByQueryVO(Page page, ExaminationPaperQueryVO examinationPaperQueryVO);

3.serviceImp

@Override
public IPage<ExaminationPaperRelevancePO> getExaminationPaperPageByQueryVO(Page page, ExaminationPaperQueryVO examinationPaperQueryVO) {

    return this.baseMapper.getExaminationPaperPageByQueryVO(page,examinationPaperQueryVO);
}

4.dao

IPage<ExaminationPaperRelevancePO> getExaminationPaperPageByQueryVO(Page page, @Param("examinationPaperQueryVO")ExaminationPaperQueryVO examinationPaperQueryVO);

5. .xml

 <select id="getExaminationPaperPageByQueryVO" resultType="com.eebbk.core.pojo.vo.ExaminationPaperCatalogVO">
        select
        a.id,a.paper_id,a.publisher_id,
        a.publisher_name,a.grade_id,a.grade_name,
        a.semester_id,a.semester_name,
        a.subject_id,a.section_id,a.source_type,
        a.province_id,a.province_name,a.city_id,
        a.city_name,a.`order`,a.staged_type as stageTypeId,a.school_type
        from t_examination_paper_relevance  a
    </select>

五、sql 打印

 

结果

六、自定义分页(已有100条数据,每次截取十条)

IPage<ExaminationPaperPO> pageData = PageUtil.listToPage(paperList,page.getCurrent(),page.getSize());
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import lombok.extern.slf4j.Slf4j;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.atomic.LongAccumulator;

@Slf4j
public class PageUtil {


    public static <T> IPage<T> listToPage(List<T> list, long pageNum, long pageSize){
        IPage<T> iPage = new Page<>(pageNum,pageSize);
        iPage.setTotal(list.size());
        int startIndex = (int)((pageNum - 1) * pageSize);
        if(null == list || list.isEmpty() || startIndex > list.size()){
            iPage.setRecords(new ArrayList<>());
        }
        else {
            int toIndex = (int)(pageNum * pageSize);
            iPage.setRecords(list.subList(startIndex,toIndex > list.size() ? list.size() : toIndex));
        }
        return iPage;
    }
}

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 详解Java如何关闭线程以及线程池

    详解Java如何关闭线程以及线程池

    java如何正确关闭线程以及线程池是一个高频的面试题,本文将为大家详细介绍实现的方法与代码,感兴趣的小伙伴快跟随小编一起学习一下
    2022-04-04
  • Java Thread中join方法使用举例详解

    Java Thread中join方法使用举例详解

    Java Thread中join()方法主要是让调用改方法的thread完成run方法里面的东西后,在执行join()方法后面的代码,这篇文章主要介绍了Java Thread中join方法使用的相关资料,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-07-07
  • Sprint Boot 集成MongoDB的操作方法

    Sprint Boot 集成MongoDB的操作方法

    最近接手一个Springboot项目,需要在原项目上增加一些需求,用到了mongodb。下面通过本文给大家分享Sprint Boot 集成MongoDB的操作方法,需要的朋友参考下吧
    2017-12-12
  • Spring-webflux 响应式编程的实例详解

    Spring-webflux 响应式编程的实例详解

    Spring 提供了两个并行堆栈,一种是基于带有 Spring MVC 和 Spring Data 结构的 Servlet API,另一个是完全反应式堆栈,它利用了 Spring WebFlux 和 Spring Data 的反应式存储库,这篇文章主要介绍了Spring-webflux 响应式编程,需要的朋友可以参考下
    2022-09-09
  • 实例详解MyBatis-plus自动填充功能

    实例详解MyBatis-plus自动填充功能

    每次对数据进行新增、删除、修改时都需要对这些字段进行设置,虽然新增时间和修改时间可以使用数据库的时间,但是新增人和修改人就不能使用这样的功能,下面小编给大家介绍下MyBatis-plus自动填充功能的实例代码,感兴趣的朋友一起看看吧
    2022-01-01
  • Java中的两种for循环介绍

    Java中的两种for循环介绍

    在学习Hibernate的时候学习一种在Java当中的for循环,估计是以前学习的时候没有记住,忘记了在这里再写下笔记
    2012-10-10
  • Java对象转换的实现方式汇总

    Java对象转换的实现方式汇总

    这篇文章主要介绍了Java对象转换的多种实现方式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2025-04-04
  • 基于JAVA每月运势api调用代码实例

    基于JAVA每月运势api调用代码实例

    这篇文章主要为大家详细介绍了JAVA每月运势api调用代码实例,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • springboot单元测试依赖踩坑记录

    springboot单元测试依赖踩坑记录

    这篇文章主要介绍了springboot单元测试依赖踩坑记录及解决,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2023-03-03
  • SpringBoot 整合 Quartz 定时任务框架详解

    SpringBoot 整合 Quartz 定时任务框架详解

    这篇文章主要介绍了SpringBoot整合Quartz定时任务框架详解,Quartz是一个完全由Java编写的开源作业调度框架,为在Java应用程序中进行作业调度提供了简单却强大的机制
    2022-08-08

最新评论