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

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ù)庫,不指定的話會(huì)默認(rèn)自動(dòng)檢測(cè)數(shù)據(jù)庫類型
  • reasonable:是否啟用分頁合理化。如果啟用,當(dāng)pagenum<1時(shí),會(huì)自動(dòng)查詢第一頁的數(shù)據(jù),當(dāng)pagenum>pages時(shí),自動(dòng)查詢最后一頁數(shù)據(jù);不啟用的,以上兩種情況都會(huì)返回空數(shù)據(jù)
  • support-methods-arguments:默認(rèn)值false,分頁插件會(huì)從查詢方法的參數(shù)值中,自動(dòng)根據(jù)上面 params 配置的字段中取值,查找到合適的值時(shí)就會(huì)自動(dòng)分頁。(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)前頁碼,每頁查詢條數(shù))

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

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

PageHelper.startPage(1,5);
//緊跟著的第一個(gè)select 方法會(huì)被分頁
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è)置第幾條記錄開始,多少條記錄為一頁

        //通過userService獲取user的信息,其sql語句為"select * from user" 但因pagehelp已經(jīng)注冊(cè)為插件,所以pagehelp會(huì)在原sql語句上增加limit,從而實(shí)現(xiàn)分頁
        List<Person> persons=userService.getAllUsersBypageHelper();  //因而獲得的是分好頁的結(jié)果集
         
        PageInfo<?> pageHelper=page.toPageInfo(); //獲取頁面信息的對(duì)象,里面封裝了許多頁面的信息 如:總條數(shù),當(dāng)前頁碼,需顯示的導(dǎo)航頁等等
           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)前頁
private int pageNum;
//每頁的數(shù)量
private int pageSize;
//當(dāng)前頁的數(shù)量
private int size;
//由于startRow 和endRow 不常用,這里說個(gè)具體的用法
//可以在頁面中"顯示startRow 到endRow 共size 條數(shù)據(jù)"
//當(dāng)前頁面第一個(gè)元素在數(shù)據(jù)庫中的行號(hào)
private int startRow;
//當(dāng)前頁面最后一個(gè)元素在數(shù)據(jù)庫中的行號(hào)
private int endRow;
//總記錄數(shù)
private long total;
//總頁數(shù)
private int pages;
//結(jié)果集
private List list;
//前一頁
private int prePage;
//下一頁
private int nextPage;
//是否為第一頁
private boolean isFirstPage = false;
//是否為最后一頁
private boolean isLastPage = false;
//是否有前一頁
private boolean hasPreviousPage = false;
//是否有下一頁
private boolean hasNextPage = false;
//導(dǎo)航頁碼數(shù)
private int navigatePages;
傳智播客——專注于Java、.Net 和Php、網(wǎng)頁平面設(shè)計(jì)工程師的培訓(xùn)
北京市昌平區(qū)建材城西路金燕龍辦公樓一層電話:400-618-9090
//所有導(dǎo)航頁號(hào)
private int[] navigatepageNums;
//導(dǎo)航條上的第一頁
private int navigateFirstPage;
//導(dǎo)航條上的最后一頁
private int navigateLastPage;
}

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

  • 對(duì)于上邊的方法一:前端的頁面中可以直接從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)文章

  • Java中三種常用布局方式小結(jié)

    Java中三種常用布局方式小結(jié)

    在Java Swing和JavaFX中,布局管理器(Layout Managers)用于控制組件(如按鈕、文本框等)在容器(如窗口、面板等)內(nèi)的位置和大小,下面介紹Java Swing中常用的三種布局方式,需要的朋友可以參考下
    2025-02-02
  • 深入Java線程中斷的本質(zhì)與編程原則的概述

    深入Java線程中斷的本質(zhì)與編程原則的概述

    本篇文章對(duì)Java線程中斷的本質(zhì)與編程原則進(jìn)行了詳細(xì)的概述,需要的朋友參考下
    2013-05-05
  • 一文弄懂Mybatis中介者模式

    一文弄懂Mybatis中介者模式

    本文主要介紹了一文弄懂Mybatis中介者模式,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • Java比較兩個(gè)對(duì)象中全部屬性值是否相等的方法

    Java比較兩個(gè)對(duì)象中全部屬性值是否相等的方法

    本文主要介紹了Java比較兩個(gè)對(duì)象中全部屬性值是否相等的方法,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Java中值傳遞和引用傳遞的區(qū)別

    Java中值傳遞和引用傳遞的區(qū)別

    這篇文章主要介紹了Java中值傳遞和引用傳遞的區(qū)別,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • JavaCV獲取視頻文件時(shí)長(zhǎng)的方法

    JavaCV獲取視頻文件時(shí)長(zhǎng)的方法

    這篇文章主要為大家詳細(xì)介紹了JavaCV獲取視頻文件時(shí)長(zhǎng)的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-07-07
  • Java面試突擊為什么要用HTTPS及它的優(yōu)點(diǎn)

    Java面試突擊為什么要用HTTPS及它的優(yōu)點(diǎn)

    這篇文章主要介紹了Java面試突擊為什么要用HTTPS及它的優(yōu)點(diǎn),文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-07-07
  • SSH原理及兩種登錄方法圖文詳解

    SSH原理及兩種登錄方法圖文詳解

    SSH(Secure Shell)是一套協(xié)議標(biāo)準(zhǔn),可以用來實(shí)現(xiàn)兩臺(tái)機(jī)器之間的安全登錄以及安全的數(shù)據(jù)傳送,其保證數(shù)據(jù)安全的原理是非對(duì)稱加密。本文通過圖文并茂的形式給大家介紹了SSH原理及兩種登錄方法,一起看看吧
    2018-08-08
  • Java中char數(shù)組(字符數(shù)組)與字符串String類型的轉(zhuǎn)換方法

    Java中char數(shù)組(字符數(shù)組)與字符串String類型的轉(zhuǎn)換方法

    這篇文章主要介紹了Java中char數(shù)組(字符數(shù)組)與字符串String類型的轉(zhuǎn)換方法,涉及Java中toCharArray與valueOf方法的使用技巧,需要的朋友可以參考下
    2015-12-12
  • springboot整合easy-es實(shí)現(xiàn)數(shù)據(jù)的增刪改查的示例代碼

    springboot整合easy-es實(shí)現(xiàn)數(shù)據(jù)的增刪改查的示例代碼

    Easy-Es是一款基于ElasticSearch官方提供的RestHighLevelClient打造的低碼開發(fā)框架,本文主要介紹了springboot整合easy-es實(shí)現(xiàn)數(shù)據(jù)的增刪改查的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03

最新評(píng)論

阿鲁科尔沁旗| 永胜县| 米林县| 乌什县| 龙南县| 清流县| 合江县| 芒康县| 芮城县| 通化市| 阜平县| 桦南县| 长汀县| 龙山县| 博白县| 瓦房店市| 淄博市| 盐城市| 孟津县| 鄂尔多斯市| 托里县| 星子县| 石柱| 凤山县| 喀喇| 抚顺县| 中方县| 玉门市| 秦皇岛市| 华阴市| 昌平区| 林口县| 永春县| 扎鲁特旗| 福鼎市| 长宁县| 确山县| 沙河市| 调兵山市| 隆昌县| 元阳县|