最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PageHelper在springboot+mybatis框架中的使用步驟及原理解析

 更新時(shí)間:2023年03月13日 10:50:06   作者:全國(guó)青少年熬夜大賽冠軍  
這篇文章主要介紹了PageHelper在springboot+mybatis框架中的使用步驟及原理解析,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

一、思路

將分頁(yè)所需的內(nèi)容都放到一個(gè)實(shí)體類中

分頁(yè)數(shù)據(jù)所需要的實(shí)體類!內(nèi)包含頁(yè)碼,頁(yè)大小,總條數(shù),總頁(yè)數(shù),起始行

pagehelpr提供了這個(gè)類 pageInfo,不需要我們自己創(chuàng)建

 二、主要邏輯

select * from 表名 limit 起始行,展示幾條數(shù)據(jù)

#第n頁(yè) 每頁(yè)展示五條數(shù)據(jù)

select * from 表名 limit (n-1)*5,5

#每頁(yè)展示多少條 pageSize

3

#總共有多少條

total

select count(*) from 表名

#總頁(yè)數(shù)

pages

pages=total%pagesSize==0?total/pgeSize:total/pageSize+1;

#當(dāng)前頁(yè)

 pageNum

三、步驟

1.引入pagehelper依賴

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>1.2.5</version>
</dependency>
#pagehelper分頁(yè)插件配置
pagehelper.helper-dialect=mysql
pagehelper.reasonable=true
pagehelper.support-methods-arguments=true
pagehelper.params=count=countSql

2.bean實(shí)體類

用戶實(shí)體:

package com.qianfeng.bean;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
 
@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class Register {
    private Integer id;
 
    private String userName;
 
    private String passWord;
 
    private String rePassWord;
 
    private String idCard;
    private String gender;
 
}

返回前端的實(shí)體類:包括查到的數(shù)據(jù)和分頁(yè)數(shù)據(jù)

package com.qianfeng.bean;
import com.github.pagehelper.PageInfo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.ToString;
 
import java.util.List;
 
@Data
@ToString
@AllArgsConstructor
@NoArgsConstructor
public class RegPage {
    private PageInfo pageInfo;
    private List<Register> registers;
}

2.mapper層:

package com.qianfeng.mapper;
 
import com.qianfeng.bean.Register;
import org.apache.ibatis.annotations.Mapper;
 
import java.util.List;
@Mapper
public interface PageDao {
    List<Register> getAll(Integer startRow,Integer pageSize);
    long getCount();
}

3.service層:

package com.qianfeng.service;
 
import com.github.pagehelper.PageInfo;
import com.qianfeng.bean.RegPage;
 
public interface RegService {
    RegPage getAll(PageInfo pageInfo);
}

4.serviceImpl:

package com.qianfeng.service.serviceImpl;
 
import com.github.pagehelper.PageInfo;
import com.qianfeng.bean.RegPage;
import com.qianfeng.bean.Register;
import com.qianfeng.mapper.PageDao;
import com.qianfeng.service.RegService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
 
import java.util.List;
 
@Service
public class RegServiceImpl implements RegService {
    @Autowired
    private PageDao pageDao;
    @Override
    public RegPage getAll(PageInfo pageInfo) {
        List<Register> all = pageDao.getAll(pageInfo.getStartRow(), pageInfo.getPageSize());//分頁(yè)后的數(shù)據(jù)
        long count = pageDao.getCount();//總記錄條數(shù)
        pageInfo.setTotal(count);
        //總頁(yè)數(shù)
        int pages= (int) (pageInfo.getTotal()%pageInfo.getPageSize()==0?pageInfo.getTotal()/pageInfo.getPageSize():pageInfo.getTotal()/pageInfo.getPageSize()+1);
        pageInfo.setPages(pages);
 
        RegPage regPage = new RegPage();
        regPage.setPageInfo(pageInfo);
        regPage.setRegisters(all);
        return regPage;
 
    }
}

5.handler層:

package com.qianfeng.handler;
 
import com.github.pagehelper.PageInfo;
import com.qianfeng.bean.RegPage;
import com.qianfeng.service.RegService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
 
@RestController
public class RegHandler {
    @Autowired
    private RegService regService;
    @RequestMapping("/page/{pageNum}")
    public RegPage regPage(@PathVariable("pageNum") Integer pageNum){
        System.out.println(".........");
        PageInfo pageInfo = new PageInfo();
        pageInfo.setPageNum(pageNum);
        pageInfo.setPageSize(3);
        pageInfo.setStartRow((pageNum-1)*pageInfo.getPageSize());
        System.out.println("startRow" + pageInfo.getStartRow());
        return regService.getAll(pageInfo);
    }
}

6.mapper.xml

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE mapper
        PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
        "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.qianfeng.mapper.PageDao">
    <select id="getAll" resultType="com.qianfeng.bean.Register">
        select * from m_register limit #{startRow},#{pageSize}
    </select>
    <select id="getCount" resultType="java.lang.Long">
        select count(*) from m_register
    </select>
</mapper>

7.application.yaml

spring:
  datasource:
    url: jdbc:mysql:///map?serverTimezone=Asia/Shanghai&useSSL=false
    username: root
    password: 123
    driver-class-name: com.mysql.jdbc.Driver
 
    druid:
      aop-patterns: com.qianfeng.*  #監(jiān)控SpringBean
      filters: stat,wall     # 底層開啟功能,stat(sql監(jiān)控),wall(防火墻)
 
      stat-view-servlet:   # 配置監(jiān)控頁(yè)功能
        enabled: true
        login-username: admin
        login-password: admin
        resetEnable: false
 
      web-stat-filter:  # 監(jiān)控web
        enabled: true
        urlPattern: /*
        exclusions: '*.js,*.gif,*.jpg,*.png,*.css,*.ico,/druid/*'
      filter:
        stat:    # 對(duì)上面filters里面的stat的詳細(xì)配置
          slow-sql-millis: 1000
          logSlowSql: true
          enabled: true
        wall:
          enabled: true
          config:
            drop-table-allow: false
  mvc:
    pathmatch:
      matching-strategy: ant_path_matcher
# mybatis的配置規(guī)則
mybatis:
  #config-location: classpath:mapper/mybatis-config.xml
  mapper-locations: classpath:mapper/*
  configuration:
    log-impl: org.apache.ibatis.logging.stdout.StdOutImpl
#      static-locations: [classpath:/haha/]  # 靜態(tài)資源路徑自定義

8.application,properties

spring.main.allow-circular-references=true
spring.thymeleaf.prefix=classpath:/templates/
spring.thymeleaf.suffix=.html
pagehelper.helper-dialect=mysql
pagehelper.reasonable=true
pagehelper.support-methods-arguments=true
pagehelper.params=count=countSql

關(guān)于PageInfo這個(gè)類,源碼如下: 

public class PageInfo implements Serializable {
private static final long serialVersionUID = 1L;
//當(dāng)前頁(yè)
private int pageNum;
//每頁(yè)的數(shù)量
private int pageSize;
//當(dāng)前頁(yè)的數(shù)量
private int size;
//由于startRow 和endRow 不常用,這里說個(gè)具體的用法
//可以在頁(yè)面中"顯示startRow 到endRow 共size 條數(shù)據(jù)"
//當(dāng)前頁(yè)面第一個(gè)元素在數(shù)據(jù)庫(kù)中的行號(hào)
private int startRow;
//當(dāng)前頁(yè)面最后一個(gè)元素在數(shù)據(jù)庫(kù)中的行號(hào)
private int endRow;
//總記錄數(shù)
private long total;
//總頁(yè)數(shù)
private int pages;
//結(jié)果集
private List list;
//前一頁(yè)
private int prePage;
//下一頁(yè)
private int nextPage;
//是否為第一頁(yè)
private boolean isFirstPage = false;
//是否為最后一頁(yè)
private boolean isLastPage = false;
//是否有前一頁(yè)
private boolean hasPreviousPage = false;
//是否有下一頁(yè)
private boolean hasNextPage = false;
//導(dǎo)航頁(yè)碼數(shù)
private int navigatePages;
//所有導(dǎo)航頁(yè)號(hào)
private int[] navigatepageNums;
//導(dǎo)航條上的第一頁(yè)
private int navigateFirstPage;
//導(dǎo)航條上的最后一頁(yè)
private int navigateLastPage;
}

目錄結(jié)構(gòu):

到此這篇關(guān)于PageHelper在springboot+mybatis框架中的使用步驟及原理的文章就介紹到這了,更多相關(guān)PageHelper在springboot+mybatis框架使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java多線程窗口售票問題實(shí)例

    Java多線程窗口售票問題實(shí)例

    這篇文章主要介紹了Java多線程窗口售票問題實(shí)例,具有一定參考價(jià)值,需要的朋友可以了解下。
    2017-11-11
  • 使用SpringBoot+OkHttp+fastjson實(shí)現(xiàn)Github的OAuth第三方登錄

    使用SpringBoot+OkHttp+fastjson實(shí)現(xiàn)Github的OAuth第三方登錄

    這篇文章主要介紹了使用SpringBoot+OkHttp+fastjson實(shí)現(xiàn)Github的OAuth第三方登錄,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-02-02
  • 基于Java編寫一個(gè)粽子大作戰(zhàn)小游戲

    基于Java編寫一個(gè)粽子大作戰(zhàn)小游戲

    端午節(jié),又稱龍舟節(jié)、重午節(jié),是中國(guó)的傳統(tǒng)節(jié)日之一,每年農(nóng)歷五月初五慶祝,雖然端午假期已經(jīng)過去了,小編還是用Java編寫了一個(gè)粽子大作戰(zhàn)小游戲,感興趣的可以了解一下
    2023-06-06
  • IDEA插件Statistic統(tǒng)計(jì)代碼快速分辨爛項(xiàng)目

    IDEA插件Statistic統(tǒng)計(jì)代碼快速分辨爛項(xiàng)目

    這篇文章主要為大家介紹了使用IDEA插件Statistic來統(tǒng)計(jì)項(xiàng)目代碼,幫助大家快速識(shí)別出爛項(xiàng)目,有需要的朋友可以借鑒參考下,希望能夠有所幫助
    2022-01-01
  • Spring Cloud LoadBalancer 負(fù)載均衡詳解

    Spring Cloud LoadBalancer 負(fù)載均衡詳解

    本文介紹了如何在Spring Cloud中使用SpringCloudLoadBalancer實(shí)現(xiàn)客戶端負(fù)載均衡,并詳細(xì)講解了輪詢策略和隨機(jī)策略的配置方法,此外,還提供了部署到云服務(wù)器并在多個(gè)實(shí)例之間進(jìn)行負(fù)載均衡的步驟,感興趣的朋友一起看看吧
    2025-02-02
  • 基于java實(shí)現(xiàn)斗地主代碼實(shí)例解析

    基于java實(shí)現(xiàn)斗地主代碼實(shí)例解析

    這篇文章主要介紹了基于java實(shí)現(xiàn)斗地主代碼實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 一文帶你徹底明白什么是Java注解

    一文帶你徹底明白什么是Java注解

    Java注解可以說是我們編碼過程中最常用的,本文將給大家介紹Java注解的概念、作用以及如何使用注解來提升代碼的可讀性和靈活性,需要的可以參考一下
    2023-05-05
  • Java中如何判斷中文字符串長(zhǎng)度

    Java中如何判斷中文字符串長(zhǎng)度

    這篇文章主要介紹了Java中如何判斷中文字符串長(zhǎng)度問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • springboot使用TaskScheduler實(shí)現(xiàn)動(dòng)態(tài)增刪啟停定時(shí)任務(wù)方式

    springboot使用TaskScheduler實(shí)現(xiàn)動(dòng)態(tài)增刪啟停定時(shí)任務(wù)方式

    這篇文章主要介紹了springboot使用TaskScheduler實(shí)現(xiàn)動(dòng)態(tài)增刪啟停定時(shí)任務(wù)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Java實(shí)現(xiàn)簡(jiǎn)單密碼加密功能

    Java實(shí)現(xiàn)簡(jiǎn)單密碼加密功能

    這篇文章主要為大家詳細(xì)介紹了Java實(shí)現(xiàn)簡(jiǎn)單密碼加密功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-03-03

最新評(píng)論

怀集县| 柳州市| 临洮县| 浦县| 徐闻县| 罗江县| 建昌县| 商水县| 木兰县| 博野县| 甘泉县| 呼和浩特市| 普宁市| 东宁县| 通道| 高唐县| 定襄县| 金堂县| 泗阳县| 岑溪市| 剑河县| 宝清县| 津市市| 武安市| 阿巴嘎旗| 河池市| 左云县| 辉县市| 纳雍县| 昭苏县| 饶河县| 黄梅县| 双桥区| 岑巩县| 北川| 汉沽区| 成安县| 舞钢市| 宝应县| 麻城市| 江达县|