国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Java分頁(yè)查詢的幾種實(shí)現(xiàn)方法

這篇具有很好參考價(jià)值的文章主要介紹了Java分頁(yè)查詢的幾種實(shí)現(xiàn)方法。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

最近在做需求的過(guò)程中遇到幾個(gè)需要分頁(yè)查詢的需求,我也對(duì)分頁(yè)有了較深的了解。分頁(yè)一般分為兩種一種是直接在sql中分頁(yè),一種是在內(nèi)存中分頁(yè)。本文僅針對(duì)內(nèi)存中分頁(yè)做記錄。

第一種

Java分頁(yè)查詢的幾種實(shí)現(xiàn)方法

Java分頁(yè)查詢的幾種實(shí)現(xiàn)方法

?文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-461785.html

?如果是一個(gè)查詢接口,向接口中傳入page,和size(page默認(rèn)值1,size默認(rèn)值10)即可,返回參數(shù)是github的PageInfo,里面在放實(shí)際返回類型。

進(jìn)入實(shí)現(xiàn)層,使用PageHelper,并調(diào)用pageQuery方法即可完成分頁(yè),以下為Pagehelper的具體代碼 。(但需注意,此方法只適用于從數(shù)據(jù)庫(kù)中直接查出的數(shù)據(jù),如果將查出的數(shù)據(jù)進(jìn)行二次封裝則會(huì)導(dǎo)致分頁(yè)失敗)

import com.github.pagehelper.Page;
import lombok.experimental.UtilityClass;
import org.springframework.beans.BeanUtils;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;

import java.util.List;
import java.util.Objects;
import java.util.function.Supplier;

/**
 * @author LIUQIFAN
 */
@UtilityClass
public class PageHelper {


    /**
     * 要求 請(qǐng)求參數(shù): ?pageNum=xxx&pageSize=xxx
     *
     * @param supplier 查詢方法
     * @param <T>      類型對(duì)象
     * @return 結(jié)果集
     */
    public static <T> PageInfo<T> pageQuery(Supplier<List<T>> supplier) {
        ServletRequestAttributes attributes = (ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes(), "無(wú)法獲取request");
        Page<Object> page = com.github.pagehelper.PageHelper.startPage(attributes.getRequest());
        //========================
        List<T> list = supplier.get();
        PageInfo<T> pageInfo = new PageInfo<>();
        BeanUtils.copyProperties(page.toPageInfo(), pageInfo);
        pageInfo.setList(list);
        return pageInfo;
    }

    /**
     * @param pageNum  頁(yè)號(hào)
     * @param pageSize 每頁(yè)數(shù)據(jù)大小
     * @param <T>      類型
     * @return 結(jié)果集
     */
    public static <T> PageInfo<T> pageQuery(int pageNum, int pageSize, Supplier<List<T>> supplier) {
        Page<Object> page = com.github.pagehelper.PageHelper.startPage(pageNum, pageSize, true);
        List<T> list = supplier.get();
        PageInfo<T> pageInfo = new PageInfo<>();
        BeanUtils.copyProperties(page.toPageInfo(), pageInfo);
        pageInfo.setList(list);
        return pageInfo;
    }


    /**
     * @param supplier 查詢方法
     * @param <T>      類型對(duì)象
     * @return 結(jié)果集
     */
    public static <T> List<T> pQuery(Supplier<List<T>> supplier) {
        ServletRequestAttributes attributes = (ServletRequestAttributes) Objects.requireNonNull(RequestContextHolder.getRequestAttributes(), "無(wú)法獲取request");
        com.github.pagehelper.PageHelper.startPage(attributes.getRequest());
        //========================
        return supplier.get();
    }

    /**
     * @param pageNum  頁(yè)號(hào)
     * @param pageSize 每頁(yè)數(shù)據(jù)大小
     * @param <T>      類型
     * @return 結(jié)果集
     */
    public static <T> List<T> pQuery(int pageNum, int pageSize, Supplier<List<T>> supplier) {
        com.github.pagehelper.PageHelper.startPage(pageNum, pageSize, true);
        return supplier.get();
    }
}

第二種

這種方法是我第一次使用,把入?yún)⒌膒age和size封裝成了對(duì)象PageDomain

PageDomain代碼如下

@Data
public class PageDomain1 {
    /**
     * 當(dāng)前頁(yè)
     */
    private Integer page = 1;

    /**
     * 每頁(yè)數(shù)量
     */
    private Integer limit = 10;

    /**
     * 獲取開始的數(shù)據(jù)行
     */
    public Integer start() {
        return (this.page - 1) * this.limit;
    }

    /**
     * 獲取結(jié)束的數(shù)據(jù)行
     */
    public Integer end() {
        return this.page * this.limit;
    }
}

Java分頁(yè)查詢的幾種實(shí)現(xiàn)方法

?這是控制層代碼

Java分頁(yè)查詢的幾種實(shí)現(xiàn)方法

?這是實(shí)現(xiàn)層代碼,這里的resultList,是我們先從數(shù)據(jù)庫(kù)中查出來(lái)的結(jié)果集,再用PageUtils的Startpage方法進(jìn)行分頁(yè)操作,最后組裝PageInfo返回體

下面是PageUtils的代碼

Java分頁(yè)查詢的幾種實(shí)現(xiàn)方法

?

到了這里,關(guān)于Java分頁(yè)查詢的幾種實(shí)現(xiàn)方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 分享SQL重復(fù)記錄查詢的幾種方法

    分享SQL重復(fù)記錄查詢的幾種方法

    ? SQL重復(fù)記錄查詢的幾種方法,需要的朋友可以參考一下 1、查找表中多余的重復(fù)記錄,重復(fù)記錄是根據(jù)單個(gè)字段(peopleId)來(lái)判斷 代碼如下: select * from people where peopleId in (select?? peopleId from?? people group by?? peopleId having count (peopleId) 1) 2、刪除表中多余的重復(fù)記錄,重復(fù)記錄

    2024年02月12日
    瀏覽(18)
  • Oracle模糊查詢的幾種方法【推薦最后一種】

    Oracle模糊查詢的幾種方法【推薦最后一種】

    歸納總結(jié) ?? --廢話不多說(shuō),直接進(jìn)入主題: oracle 中的 || 起鏈接作用,使用“||”字符,連接成 -- %param% 示例: 結(jié)果: flowermoringrain 嵌套查詢: 示例: 結(jié)果:\\\'ABC\\\' MySQL中的模糊查詢 like 和 Oracle中的 instr() 函數(shù) 有同樣的查詢效果; 示例: 想了解上述基本原理的 ?? ,就可以

    2024年02月11日
    瀏覽(18)
  • Java提升數(shù)據(jù)庫(kù)大數(shù)據(jù)查詢速度的幾種方式

    Java提升數(shù)據(jù)庫(kù)大數(shù)據(jù)查詢速度的幾種方式

    本文章以MySQL數(shù)據(jù)庫(kù)為用例說(shuō)明,列舉出幾個(gè)常用的提升查詢速度的方式。 分頁(yè)查詢,在網(wǎng)絡(luò)瀏覽中,經(jīng)常會(huì)看到分頁(yè)的使用,像百度搜索分頁(yè)、文檔資料分頁(yè)等,這些都是一種常見(jiàn)的提升數(shù)據(jù)查詢速度和用戶體驗(yàn)的一種方式,數(shù)據(jù)庫(kù)有l(wèi)imit,開發(fā)人員可使用此

    2024年02月12日
    瀏覽(21)
  • mybatisplus的幾種分頁(yè)方式

    官方文檔中給出了幾種分頁(yè)方式,挨個(gè)舉例說(shuō)明一下 這三種 Mybatis Plus 分頁(yè)方式的區(qū)別主要在于傳遞參數(shù)的方式和返回結(jié)果的類型。 IPage selectPageVo(IPage? page, Integer state) 這種方式需要傳入一個(gè) IPage 對(duì)象作為分頁(yè)參數(shù),其泛型類型可以是任何實(shí)體類。方法返回值也是一個(gè) IPage 對(duì)

    2024年02月07日
    瀏覽(24)
  • 【Java】打印矩陣的幾種方法

    【Java】打印矩陣的幾種方法

    首先創(chuàng)建一個(gè)矩陣 int[][] grid = {{1,2,4},{3,3,1},{3,4,5}}; 如果直接輸出grid,則會(huì)打印矩陣地址,所以,我們需要進(jìn)行矩陣遍歷,得到矩陣的值。 直接打印grid: 首先,用row記錄矩陣的行數(shù),用column記錄矩陣的列數(shù),并通過(guò)行數(shù)和列數(shù)進(jìn)行矩陣遍歷 得到結(jié)果: 結(jié)果: 結(jié)果:

    2024年02月11日
    瀏覽(18)
  • Java獲取Java文件路徑的幾種方法

    Java獲取Java文件路徑的幾種方法 在Java開發(fā)中,獲取Java文件的路徑是一項(xiàng)常見(jiàn)的任務(wù)。無(wú)論是讀取文件、寫入文件還是對(duì)文件進(jìn)行其他操作,都需要先獲得文件的路徑。本文將介紹幾種獲取Java文件路徑的方法,并提供相應(yīng)的代碼示例和詳細(xì)描述。 方法一:使用相對(duì)路徑 相對(duì)

    2024年02月07日
    瀏覽(24)
  • java比較日期大小的幾種方法

    1. Date.compareTo() java.util.Date提供了在Java中比較兩個(gè)日期的經(jīng)典方法compareTo()。 如果兩個(gè)日期相等,則返回值為0。 如果Date在date參數(shù)之后,則返回值大于0。 如果Date在date參數(shù)之前,則返回值小于0。 @Test void testDateCompare() throws ParseException { SimpleDateFormat sdf = new SimpleDateFormat(\\\"yyyy

    2024年02月03日
    瀏覽(19)
  • JAVA 截取字符串的幾種方法

    主要有以下幾種方法: 1、通過(guò)subString()方法來(lái)進(jìn)行字符串截?。ㄗ畛S茫?2、通過(guò)StringUtils提供的方法 3、split()+正則表達(dá)式來(lái)進(jìn)行截取 1、通過(guò)subString()方法來(lái)進(jìn)行字符串截取,返回字符串中的子字符串,在java中有兩種用法 第一種,傳遞一個(gè)參數(shù): 第二種,傳遞兩個(gè)參數(shù):

    2024年02月10日
    瀏覽(19)
  • java高并發(fā)處理 java處理高并發(fā)的幾種方法

    ???????? 并發(fā)就是可以使用多個(gè)線程或進(jìn)程,同時(shí)處理(就是并發(fā))不同的操作。 ????????高并發(fā)的時(shí)候就是有很多用戶在訪問(wèn),導(dǎo)致系統(tǒng)數(shù)據(jù)不正確、糗事數(shù)據(jù)的現(xiàn)象。對(duì)于一些大型網(wǎng)站,比如門戶網(wǎng)站,在面對(duì)大量用戶訪問(wèn)、高并發(fā)請(qǐng)求方面,基本的解決方案集中

    2024年02月07日
    瀏覽(23)
  • 【Java】讀取 springboot 配置文件內(nèi)容的幾種方法

    Spring Boot 是一個(gè)非常流行的 Java Web 開發(fā)框架,它提供了大量的便捷功能和特性,其中讀取配置文件是其中的一項(xiàng)重要功能。Spring Boot 支持多種方式讀取配置文件,本文將介紹 Spring Boot 讀取配置文件的原理和常用方法。 Spring Boot 讀取配置文件的原理是通過(guò) Spring Boot 的自動(dòng)配置

    2024年02月15日
    瀏覽(22)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包