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

TK-MyBatis 分頁查詢的具體使用

 更新時(shí)間:2021年12月01日 10:47:19   作者:冉野丶  
分頁查詢?cè)诤芏嗟胤蕉伎梢允褂玫?,本文就詳?xì)的介紹了一下TK-MyBatis 分頁查詢的具體使用,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

記 tkMybatis 查詢出一個(gè) ?List集合 該集合已經(jīng)做好了一層分頁P(yáng)age封裝 即查詢出的list 使用類型判斷 instanceof Page 為true
但是,中途不明白這是一個(gè)帶分頁的集合,把查詢出的結(jié)果集又做了一層封裝 需要返回的對(duì)象類型為GoodsCategoryDTO,代碼如下:?

   // 商品集合
             List<GoodsCategoryDTO> goodsCategorys  = goodsLists.stream().map(x->{
            GoodsCategoryDTO goodsDTO = new GoodsCategoryDTO();
            goodsDTO.setGoodsId(x.getGoodsId());
            // 價(jià)格,名字
            if(x.getPriceInfo().getPriceValue() == null && x.getPriceInfo().getPriceType() == null){
                goodsDTO.setOriginalPrice(x.getPriceInfo().getOriginalPrice());
            }else {
                goodsDTO.setOriginalPrice(x.getPriceInfo().getOriginalPrice());
                goodsDTO.setPrice(x.getPriceInfo().getPriceValue() == null ?  new BigDecimal(""): x.getPriceInfo().getPriceValue());
                goodsDTO.setGoodsLable(x.getPriceInfo().getPriceName());
            }
            goodsDTO.setTitle(x.getGoodsName());
            goodsDTO.setSubTitle(x.getGoodsSubname());
            goodsDTO.setImg(x.getGoodsImage());
            goodsDTO.setSkuId(x.getSkuId());
            return goodsDTO;
        }).collect(Collectors.toList());
         return goodsCategorys;

從字面意思上理解 沒有問題 返回一個(gè)需要出里商品的集合 在controller里面做分頁的時(shí)候new 一個(gè)PageInfo 把該集合傳入 代碼如下:

 PageHelper.startPage(goodsParam.getPage(), goodsParam.getSize());  //  設(shè)置分頁值
        // 返回值
         List<GoodsCategoryDTO> goodsCategoryDTO = goodsService.getGoodsCategoryInfo(goodsParam);
         PageInfo<GoodsCategoryDTO> pageInfo = new PageInfo<>(goodsCategoryDTO);
         return ResultGenerator.genSuccessResult("返回?cái)?shù)據(jù)成功", pageInfo);

但是萬萬沒有想到,在創(chuàng)建分頁對(duì)象PageInfo過程中 goodsCategoryDTO這個(gè)集合來判斷分頁形式,然后根據(jù)page 獲取當(dāng)前頁pageNum和pageSize和pageTotal,但是如果goodsCategoryDTO 使用instanceof 判斷一直是Collection 無法分頁。

public PageInfo(List<T> list, int navigatePages) {
        if (list instanceof Page) {
            Page page = (Page) list;
            this.pageNum = page.getPageNum();
            this.pageSize = page.getPageSize();
 
            this.pages = page.getPages();
            this.list = page;
            this.size = page.size();
            this.total = page.getTotal();
            //由于結(jié)果是>startRow的,所以實(shí)際的需要+1
            if (this.size == 0) {
                this.startRow = 0;
                this.endRow = 0;
            } else {
                this.startRow = page.getStartRow() + 1;
                //計(jì)算實(shí)際的endRow(最后一頁的時(shí)候特殊)
                this.endRow = this.startRow - 1 + this.size;
            }
        } else if (list instanceof Collection) {
            this.pageNum = 1;
            this.pageSize = list.size();
 
            this.pages = this.pageSize > 0 ? 1 : 0;
            this.list = list;
            this.size = list.size();
            this.total = list.size();
            this.startRow = 0;
            this.endRow = list.size() > 0 ? list.size() - 1 : 0;
        }
        if (list instanceof Collection) {
            this.navigatePages = navigatePages;
            //計(jì)算導(dǎo)航頁
            calcNavigatepageNums();
            //計(jì)算前后頁,第一頁,最后一頁
            calcPage();
            //判斷頁面邊界
            judgePageBoudary();
        }
    }

想了一下 使用如下的解決辦法可能會(huì)好一點(diǎn) 直接new 一個(gè)新的Page對(duì)象 獲取新的pageNum pageSize Total 然后賦值給該對(duì)象 ,然后遍歷集合中g(shù)oodsList 然后做二次封裝 添加到 page集合 最后返回該集合即可。

 /**
     * 查詢分類商品信息
     * @param goodsParam
     * @return
     */
    public List<GoodsCategoryDTO> getGoodsCategoryInfo (GoodsParam goodsParam){
 
         // 查詢出已經(jīng)實(shí)現(xiàn)和封裝好的Page的list
         List<GoodsDTO> goodsLists = queryGoodsByCat(goodsParam);
 
         if (goodsLists instanceof Page<?>) {
             Page<GoodsDTO> goodsPage = (Page<GoodsDTO>) goodsLists;
             return new Page<GoodsCategoryDTO>() {{
                 this.setPageNum(goodsPage.getPageNum());
                 this.setPageSize(goodsPage.getPageSize());
                 this.setTotal(goodsPage.getTotal());
                 this.setPages(goodsPage.getPages());
                 this.addAll(goodsPage.stream().map(goods -> new GoodsCategoryDTO() {{
                     this.setGoodsId(goods.getGoodsId());
                     this.setTitle(goods.getGoodsName());
                     this.setSubTitle(goods.getGoodsSubname());
                     this.setImg(goods.getGoodsImage());
                     this.setSkuId(goods.getSkuId());
                     if(goods.getPriceInfo().getPriceValue() == null && goods.getPriceInfo().getPriceType() == null){
                         this.setOriginalPrice(goods.getPriceInfo().getOriginalPrice());
                     }else {
                         this.setOriginalPrice(goods.getPriceInfo().getOriginalPrice());
                         this.setPrice(goods.getPriceInfo().getPriceValue() == null ?  new BigDecimal(""): goods.getPriceInfo().getPriceValue());
                         this.setGoodsLable(goods.getPriceInfo().getPriceName());
                     }
                 }}).collect(Collectors.toList()));
             }};
         } else {
             throw new IllegalStateException("goods list must be instance of Page");
         }
    }

到此這篇關(guān)于TK-MyBatis 分頁查詢的具體使用的文章就介紹到這了,更多相關(guān)TK-MyBatis 分頁查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • SpringBoot內(nèi)置tomcat參數(shù)調(diào)優(yōu)的實(shí)現(xiàn)

    SpringBoot內(nèi)置tomcat參數(shù)調(diào)優(yōu)的實(shí)現(xiàn)

    springboot內(nèi)置了tomcat, 并給我們?cè)O(shè)置了默認(rèn)參數(shù), 我們?cè)趺礃有薷膕pringboot內(nèi)置的tomcat參數(shù),本文就詳細(xì)的來介紹一下,感興趣的可以了解一下
    2023-09-09
  • 9種Java單例模式詳解(推薦)

    9種Java單例模式詳解(推薦)

    這篇文章主要介紹了9種Java單例模式詳解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • Windows10 Java環(huán)境變量配置過程圖解

    Windows10 Java環(huán)境變量配置過程圖解

    這篇文章主要介紹了Windows10 Java環(huán)境變量配置過程圖解,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • 詳解Java如何給按鈕添加監(jiān)視器

    詳解Java如何給按鈕添加監(jiān)視器

    這篇文章主要介紹了詳解Java如何給按鈕添加監(jiān)視器,使用匿名對(duì)象、實(shí)現(xiàn)接口、實(shí)現(xiàn)類、Lambda表達(dá)式、注解等,需要的朋友可以參考下
    2023-04-04
  • Java設(shè)計(jì)模式之適配器模式的示例詳解

    Java設(shè)計(jì)模式之適配器模式的示例詳解

    適配器模式,即將某個(gè)類的接口轉(zhuǎn)換成客戶端期望的另一個(gè)接口的表示,主要目的是實(shí)現(xiàn)兼容性,讓原本因?yàn)榻涌诓黄ヅ?,沒辦法一起工作的兩個(gè)類,可以協(xié)同工作。本文將通過示例詳細(xì)介紹適配器模式,需要的可以參考一下
    2022-02-02
  • Jenkins 關(guān)閉和重啟詳細(xì)介紹及實(shí)現(xiàn)

    Jenkins 關(guān)閉和重啟詳細(xì)介紹及實(shí)現(xiàn)

    這篇文章主要介紹了Jenkins的關(guān)閉、重啟的相關(guān)資料,用jar -jar jenkins.war來啟動(dòng)jenkins服務(wù)器,那么我們?nèi)绾侮P(guān)閉或者重啟jenkins服務(wù)器呢,這里就給出實(shí)現(xiàn)的方法,需要的朋友可以參考下
    2016-11-11
  • java使用Feign實(shí)現(xiàn)聲明式Restful風(fēng)格調(diào)用

    java使用Feign實(shí)現(xiàn)聲明式Restful風(fēng)格調(diào)用

    這篇文章主要為大家詳細(xì)介紹了java使用Feign實(shí)現(xiàn)聲明式Restful風(fēng)格調(diào)用,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • 使用springboot+druid雙數(shù)據(jù)源動(dòng)態(tài)配置操作

    使用springboot+druid雙數(shù)據(jù)源動(dòng)態(tài)配置操作

    這篇文章主要介紹了使用springboot+druid雙數(shù)據(jù)源動(dòng)態(tài)配置的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-09-09
  • Java中byte、byte數(shù)組與int、long的轉(zhuǎn)換詳解

    Java中byte、byte數(shù)組與int、long的轉(zhuǎn)換詳解

    這篇文章分別給大家介紹了Java中byte和int之間的轉(zhuǎn)換、Java中 byte數(shù)組和int之間的轉(zhuǎn)換、Java中byte數(shù)組和long之間的轉(zhuǎn)換以及整理了整體工具類的源碼,需要的朋友可以參考借鑒,下面來一起看看吧。
    2017-02-02
  • Java實(shí)現(xiàn)二維碼QRCode的編碼和解碼與示例解析

    Java實(shí)現(xiàn)二維碼QRCode的編碼和解碼與示例解析

    本文主要介紹Java實(shí)現(xiàn)二維碼QRCode的編碼和解碼,這里給大家一個(gè)小示例以便理解,有需要的小伙伴可以參考下
    2016-08-08

最新評(píng)論

东兴市| 京山县| 沧源| 菏泽市| 寻甸| 高碑店市| 阳朔县| 孟州市| 大荔县| 平潭县| 社会| 武安市| 宁化县| 交城县| 岚皋县| 洪雅县| 治多县| 集安市| 会泽县| 舟曲县| 乌兰察布市| 牟定县| 中牟县| 定南县| 九龙县| 石泉县| 刚察县| 霸州市| 双柏县| 广灵县| 建德市| 奉新县| 古浪县| 宁南县| 措美县| 永兴县| 永安市| 南川市| 玉环县| 伊宁县| 黑龙江省|