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

springboot整合mybatis分页插件PageHelper实战

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

springboot整合mybatis分页插件PageHelper实战

目录
    • 一、在pom.xml文件中引入Pagehelper分页插件
    • 二、yml中配置分页插件等:
    • 三、数据库t_book:
    • 四、实体类Book:
    • 五、BookDao接口(即mapper接口):
    • 六、sql映射文件:
    • 七、service层:
    • 八、controller:
    • 九、postman测试:
    • 拓展:

参考:

https://www.cnblogs.com/xifengxiaoma/p/11027551.html

https://blog.csdn.net/wu1997___/article/details/111478479

一、在pom.xml文件中引入Pagehelper分页插件

注意:
我这里直接使用springboot在线模板创建的,即springboot2.6.0,
springboot2.6.0默认情况完全禁止Bean的循环引用,当我们使用依赖注入@Resource和@Autowired时候,直接启动报错,说出现循环依赖等英文。

解决方法:你也可以通过下面的配置,放开不允许循环依赖的要求:

spring.main.allow-circular-references=true



    4.0.0
    
        org.springframework.boot
        spring-boot-starter-parent
        2.6.0
         
    
    com.example
    springboot-mabtis-pagehelper
    0.0.1-SNAPSHOT
    springboot-mabtis-pagehelper
    Demo project for Spring Boot
    
        1.8
    
    
        
        
            mysql
            mysql-connector-java
            8.0.22
        
        
        
            com.alibaba
            druid-spring-boot-starter
            1.1.17
        
        
        
            org.mybatis.spring.boot
            mybatis-spring-boot-starter
            2.1.3
        
        
        
            com.github.pagehelper
            pagehelper-spring-boot-starter
            1.2.5
        

        
        
            org.springframework.boot
            spring-boot-starter-web
            2.5.0
        
        
        
            org.projectlombok
            lombok
            1.18.22
        
        
            org.springframework.boot
            spring-boot-starter
        
        
            org.springframework.boot
            spring-boot-starter-test
            test
        
    

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



二、yml中配置分页插件等:
pagehelper.helper-dialect=mysql
pagehelper.params=count=countSql
pagehelper.reasonable=true
pagehelper.support-methods-arguments=true

或者yml:

server:
  port: 8080

spring:
  datasource:  #数据源连接信息
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8&useSSL=false&serverTimezone=UTC&rewriteBatchedStatements=true
    username: root
    password: root
    type: com.alibaba.druid.pool.DruidDataSource
  main:  #springboot2.6要开启允许循环依赖
    allow-circular-references: true

#mybatis的配置
mybatis:
  mapper-locations: classpath:mapper
    //分页参数这里必须带(因为前端一定会传递分页的两个参数的),分页的本质就是在server层进行包装和执行
    public PageInfo selectAllByPageInfo(Integer pageNum, Integer pageSize);
    //动态条件查询加分页
    public PageInfo selectByPageAndCondition(Integer pageNum, Integer pageSize,Book book);
}

service实现类:分页方法的返回值也是PageInfo:

package com.example.springboot.service.impl;

import com.example.springboot.dao.BookDao;
import com.example.springboot.entity.Book;
import com.example.springboot.service.BookService;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;

import java.util.List;
@Service
public class BookserviceImpl implements BookService {
    @Autowired
    private BookDao bookDao;

    @Override
    public PageInfo selectAllByPageInfo(Integer pageNum, Integer pageSize) {
        //1.分页的开始页的分页设置,分页一定要至少传递这两个参数
        PageHelper.startPage(pageNum, pageSize);
        //2.紧跟分页设置的后的第一个select查询会被分页查询
        List books = bookDao.selectAllByPage();
        //3.PageInfo参数navigatepage(导航页,显示的页码):默认显示5个连续页,页码导航连续显示的页数5
        PageInfo bookPageInfo = new PageInfo(books,5);
        return bookPageInfo;
    }
 	@Override
    public PageInfo selectByPageAndCondition
            (Integer pageNum, Integer pageSize, Book book) {
        //1.分页助手开始分页
        PageHelper.startPage(pageNum,pageSize);
        //2.调用dao层的select查询方法,第一个select方法会被分页
        List books = bookMaper.selectByPageAndCondition(book);
        //3。封装分页结果到PageInfo中
        PageInfo bookPageInfo = new PageInfo<>(books, 5);
        return bookPageInfo;
    }
}

八、controller:
package com.example.springboot.controller;

import com.example.springboot.entity.Book;
import com.example.springboot.service.BookService;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;

@RestController
@Slf4j
public class BookController {
    @Autowired
    private BookService bookService;

    @RequestMapping(value = "/selectAllByPage" ,method = RequestMethod.GET)
    public PageInfo selectAllByPage(
            @RequestParam(required = true,defaultValue = "1",value ="pageNum" )Integer pageNum,
            @RequestParam(required = false,defaultValue = "5",value = "pageSize")Integer pageSize){
        if(pageNum==null){
            pageNum=1;
        }
        if(pageSize==null){
            pageSize=10;
        }

        PageInfo pageInfo = bookService.selectAllByPageInfo(pageNum, pageSize);
        return pageInfo;
    }
    
    @ResponseBody //动态查询的分页
    @RequestMapping(value = "/selectByPageAndCondition",method = RequestMethod.GET)
    public PageInfo selectByPageAndCondition(
            @RequestParam(value = "pageNum",required = true,defaultValue = "1") Integer pageNum,
            @RequestParam(value = "pageSize",required = false,defaultValue = "5") Integer pageSize,
            Book book){
        PageInfo bookPageInfo = bookService.selectByPageAndCondition(pageNum, pageSize, book);
        return bookPageInfo;
    }
}

九、postman测试:

数据库数据展示:

动态条件加分页的postman测试:

拓展:

使用pageHelper插件来分页,只需在执行sql前用即可

String orderBy = 排序字段 + " desc";//按照(数据库)排序字段 倒序 排序

PageHelper.startPage(pageNum, pageSize, orderBy)

或者:
service实现类:

 @Override
    public PageInfo selectByPageAndCondition
            (Integer pageNum, Integer pageSize,String orderBy, Book book) {
        //1.分页助手开始分页
        PageHelper.startPage(pageNum,pageSize);
        PageHelper.orderBy(orderBy); //排序的方法 PageHelper.orderBy(String orderBy)
        //2.调用dao层的select查询方法,第一个select方法会被分页
        List books = bookMaper.selectByPageAndCondition(book);
        //3。封装分页结果到PageInfo中
        PageInfo bookPageInfo = new PageInfo<>(books, 5);
        return bookPageInfo;
    }

controller:

@ResponseBody //动态查询的分页
    @RequestMapping(value = "/selectByPageAndCondition",method = RequestMethod.GET)
    public PageInfo selectByPageAndCondition(
            @RequestParam(value = "pageNum",required = true,defaultValue = "1") Integer pageNum,
            @RequestParam(value = "pageSize",required = false,defaultValue = "5") Integer pageSize,
            @RequestParam(value = "orderBy",required = false) String orderBy,
            Book book){
        PageInfo bookPageInfo =
                bookService.selectByPageAndCondition(pageNum, pageSize,orderBy, book);
        return bookPageInfo;
    }
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/601197.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号