欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

PageHelper在springboot中的使用方式

 更新時(shí)間:2024年05月06日 11:18:01   作者:知識(shí)淺談  
這篇文章主要介紹了PageHelper在springboot中的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

PageHelper的使用方法

第一步、導(dǎo)入相對(duì)應(yīng)的坐標(biāo)和包

<dependency>
    <groupId>com.github.pagehelper</groupId>
    <artifactId>pagehelper-spring-boot-starter</artifactId>
    <version>${pagehelper.version}</version>
</dependency>

第二步、配置文件的配置

pagehelper:
  helper-dialect: mysql
  reasonable: true
  support-methods-arguments: true
  params: count=countsql

參數(shù)解釋:

  • helper-dialect:指定數(shù)據(jù)庫(kù),不指定的話會(huì)默認(rèn)自動(dòng)檢測(cè)數(shù)據(jù)庫(kù)類型
  • reasonable:是否啟用分頁(yè)合理化。如果啟用,當(dāng)pagenum<1時(shí),會(huì)自動(dòng)查詢第一頁(yè)的數(shù)據(jù),當(dāng)pagenum>pages時(shí),自動(dòng)查詢最后一頁(yè)數(shù)據(jù);不啟用的,以上兩種情況都會(huì)返回空數(shù)據(jù)
  • support-methods-arguments:默認(rèn)值false,分頁(yè)插件會(huì)從查詢方法的參數(shù)值中,自動(dòng)根據(jù)上面 params 配置的字段中取值,查找到合適的值時(shí)就會(huì)自動(dòng)分頁(yè)。(copy來的,因?yàn)槲乙膊恢涝趺慈ソ忉專?/li>
  • params:用于從對(duì)象中根據(jù)屬性名取值, 可以配置 pageNum,pageSize,count,pageSizeZero,reasonable,不配置映射的用默認(rèn)值, 默認(rèn)值為pageNum=pageNum;pageSize=pageSize;count=countSql;reasonable=reasonable;pageSizeZero=pageSizeZero

第三步、方法調(diào)用

使用PageHelper.startPage 靜態(tài)方法調(diào)用startPage :

特點(diǎn):

1.靜態(tài)方法,傳遞兩個(gè)參數(shù)(當(dāng)前頁(yè)碼,每頁(yè)查詢條數(shù))

2.使用pageHelper 分頁(yè)的時(shí)候,不再關(guān)注分頁(yè)語句,查詢?nèi)康恼Z句

3.自動(dòng)的對(duì)PageHelper.startPage 方法下的第一個(gè)sql 查詢進(jìn)行分頁(yè)

PageHelper.startPage(1,5);
//緊跟著的第一個(gè)select 方法會(huì)被分頁(yè)
List list = countryMapper.findAll();

也就是說再Service層PageHelper.startPage(1,5);語句后一定是緊跟查詢語句。

  • 方法一:使用service查詢到的結(jié)果存儲(chǔ)在request域中
private void selectAllUsers(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException
    {

        String num=request.getParameter("num");

        if(null==num)
        {
            num="1";
        }

        // Page PageInfo

        Page<?> page=PageHelper.startPage(Integer.parseInt(num),5);  //設(shè)置第幾條記錄開始,多少條記錄為一頁(yè)

        //通過userService獲取user的信息,其sql語句為"select * from user" 但因pagehelp已經(jīng)注冊(cè)為插件,所以pagehelp會(huì)在原sql語句上增加limit,從而實(shí)現(xiàn)分頁(yè)
        List<Person> persons=userService.getAllUsersBypageHelper();  //因而獲得的是分好頁(yè)的結(jié)果集
         
        PageInfo<?> pageHelper=page.toPageInfo(); //獲取頁(yè)面信息的對(duì)象,里面封裝了許多頁(yè)面的信息 如:總條數(shù),當(dāng)前頁(yè)碼,需顯示的導(dǎo)航頁(yè)等等
           request.setAttribute("persons",persons);     request.setAttribute("pagehelper",pageHelper);
       request.getRequestDispatcher("/persons.jsp").forward(request,response);

    }
  • 方法二:使用service查詢到的結(jié)果存儲(chǔ)在自定義的類中然后返回給前端
 public PageResult<List<ProjectListVO>> queryByProjectName(Integer pageNo, Integer pageSize, String projectName) {
        PageResult<List<ProjectListVO>> result = new PageResult<>();
        try {
            PageHelper.startPage(pageNo, pageSize);
            List<ProjectListVO> projectVOList = projectMapper.queryByProjectName(projectName); //設(shè)置完上邊的PageHelper之后查詢的時(shí)候,查詢語句會(huì)自動(dòng)加入 limits startpage   count,查詢結(jié)果就是正確的結(jié)果
            PageInfo<ProjectListVO> pageInfo = new PageInfo<>(projectVOList);
            result.setTotal(pageInfo.getTotal());
            result.setPages(pageInfo.getPages());
            result.setCurrent(pageInfo.getPageNum());
            result.setSize(pageInfo.getPageSize());
            result.setResult(projectVOList);
            result.success("查詢成功!");
        } finally {
            PageHelper.clearPage();
        }

        return result;
    }

關(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;
傳智播客——專注于Java、.Net 和Php、網(wǎng)頁(yè)平面設(shè)計(jì)工程師的培訓(xùn)
北京市昌平區(qū)建材城西路金燕龍辦公樓一層電話:400-618-9090
//所有導(dǎo)航頁(yè)號(hào)
private int[] navigatepageNums;
//導(dǎo)航條上的第一頁(yè)
private int navigateFirstPage;
//導(dǎo)航條上的最后一頁(yè)
private int navigateLastPage;
}

第四步、關(guān)于controller中的使用

  • 對(duì)于上邊的方法一:前端的頁(yè)面中可以直接從request域中獲取相對(duì)應(yīng)的結(jié)果。
  • 對(duì)于上邊的方法二:
    @ApiOperation("根據(jù)項(xiàng)目名查詢項(xiàng)目信息")
    @RequestMapping(value = "/queryByProjectName", method = RequestMethod.GET)
    public PageResult<List<ProjectListVO>> queryByProjectName(@RequestParam(defaultValue = "1", value = "pageNo") Integer pageNo,
                                                              @RequestParam(defaultValue = "10", value = "pageSize") Integer pageSize,
                                                              @RequestParam(name = "projectName") String projectName) {
        if (StringUtils.isEmpty(projectName)) {
            throw new DareException("參數(shù)錯(cuò)誤!");
        }
        PageResult<List<ProjectListVO>> result = new PageResult<>();
        try {
            projectName = "%" + projectName + "%";
//            System.out.println(projectName);
            result = projectService.queryByProjectName(pageNo, pageSize, projectName);
        } catch (Exception e) {
            e.printStackTrace();
            log.error(e.getMessage());
            result.setSuccess(false);
            result.setMessage("操作失?。?);
        }
        return result;
    }

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • SpringBoot自動(dòng)裝配之Condition深入講解

    SpringBoot自動(dòng)裝配之Condition深入講解

    @Conditional表示僅當(dāng)所有指定條件都匹配時(shí),組件才有資格注冊(cè)。該@Conditional注釋可以在以下任一方式使用:作為任何@Bean方法的方法級(jí)注釋、作為任何類的直接或間接注釋的類型級(jí)別注釋@Component,包括@Configuration類、作為元注釋,目的是組成自定義構(gòu)造型注釋
    2023-01-01
  • Java在排序數(shù)組中查找元素的第一個(gè)和最后一個(gè)位置的方法詳解

    Java在排序數(shù)組中查找元素的第一個(gè)和最后一個(gè)位置的方法詳解

    相信大家在操作Java的時(shí)候經(jīng)常會(huì)要在一個(gè)數(shù)組(無序)中查找元素的第一個(gè)和最后一個(gè)位置,下面這篇文章主要給大家介紹了關(guān)于Java在排序數(shù)組中查找元素的第一個(gè)和最后一個(gè)位置的相關(guān)資料,需要的朋友可以參考下
    2024-01-01
  • 一文帶你解讀所有HashMap的面試題

    一文帶你解讀所有HashMap的面試題

    HashMap在面試的時(shí)候,是非常容易被問到的。因?yàn)樵贘DK8出來之后,非常容易被問到關(guān)于HashMap的知識(shí)點(diǎn),而如果對(duì)于沒有研究過他的源代碼的同學(xué)來說,這個(gè)可能只是說出一部分來。本文就把HashMap上面大部分會(huì)被在面試中問到的內(nèi)容,做個(gè)總結(jié),希望有所幫助
    2022-09-09
  • Java數(shù)據(jù)結(jié)構(gòu)之圖的基礎(chǔ)概念和數(shù)據(jù)模型詳解

    Java數(shù)據(jù)結(jié)構(gòu)之圖的基礎(chǔ)概念和數(shù)據(jù)模型詳解

    在現(xiàn)實(shí)生活中,有許多應(yīng)用場(chǎng)景會(huì)包含很多點(diǎn)以及點(diǎn)點(diǎn)之間的連接,而這些應(yīng)用場(chǎng)景我們都可以用即將要學(xué)習(xí)的圖這種數(shù)據(jù)結(jié)構(gòu)去解決。本文主要介紹了圖的基礎(chǔ)概念和數(shù)據(jù)模型,感興趣的可以了解一下
    2022-11-11
  • 解析Spring Boot內(nèi)嵌tomcat關(guān)于getServletContext().getRealPath獲取得到臨時(shí)路徑的問題

    解析Spring Boot內(nèi)嵌tomcat關(guān)于getServletContext().getRealPath獲取得到臨時(shí)

    大家都很糾結(jié)這個(gè)問題在使用getServletContext().getRealPath()得到的是臨時(shí)文件的路徑,每次重啟服務(wù),這個(gè)臨時(shí)文件的路徑還好變更,下面小編通過本文給大家分享Spring Boot內(nèi)嵌tomcat關(guān)于getServletContext().getRealPath獲取得到臨時(shí)路徑的問題,一起看看吧
    2021-05-05
  • Java線程運(yùn)行的原理詳解

    Java線程運(yùn)行的原理詳解

    這篇文章主要為大家詳細(xì)介紹了Java線程運(yùn)行的原理,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • SpringBoot整合Spring Security構(gòu)建安全的Web應(yīng)用

    SpringBoot整合Spring Security構(gòu)建安全的Web應(yīng)用

    pring Security是一個(gè)強(qiáng)大的身份驗(yàn)證和訪問控制框架,本文主要介紹了SpringBoot整合Spring Security構(gòu)建安全的Web應(yīng)用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-01-01
  • Java 排序算法整合(冒泡,快速,希爾,拓?fù)洌瑲w并)

    Java 排序算法整合(冒泡,快速,希爾,拓?fù)?,歸并)

    這篇文章主要介紹了Java 排序算法整合(冒泡,快速,希爾,拓?fù)?,歸并),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • java實(shí)現(xiàn)token無感刷新+處理并發(fā)的后端方案

    java實(shí)現(xiàn)token無感刷新+處理并發(fā)的后端方案

    在Web應(yīng)用中,Token用于身份驗(yàn)證和會(huì)話管理,但當(dāng)Token過期時(shí),可能會(huì)導(dǎo)致用戶在提交表單或進(jìn)行操作時(shí)突然被重定向到登錄頁(yè)面,本文就來介紹一下java實(shí)現(xiàn)token無感刷新+處理并發(fā)的后端方案,感興趣的可以了解一下
    2024-11-11
  • 2022?最新?IntelliJ?IDEA?詳細(xì)配置步驟演示(推薦)

    2022?最新?IntelliJ?IDEA?詳細(xì)配置步驟演示(推薦)

    作為一名開發(fā)人員,第一肯定是選擇一款趁手的開發(fā)利器,本人使用?Java?偏多,這里推薦使用?IntelliJ?IDEA,?俗稱神級(jí)開發(fā)工具,具體的安裝過程就不過多贅述了,有需要了解的朋友可以參考下本文
    2022-09-09

最新評(píng)論