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

MyBatis中的limit分頁設(shè)置

 更新時(shí)間:2023年11月24日 17:05:32   作者:timchen525  
這篇文章主要介紹了MyBatis中的limit分頁設(shè)置方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

MyBatis limit分頁設(shè)置

錯(cuò)誤的寫法

<select id="queryMyApplicationRecord" parameterType="MyApplicationRequest" resultMap="myApplicationMap">
    SELECT
    a.*,
    FROM
    tb_user a
    WHERE 1=1
    <if test="ids != null and ids.size()!=0">
        AND a.id IN
        <foreach collection="ids" item="id" index="index"
                 open="(" close=")" separator=",">
            #{id}
        </foreach>
    </if>
    <if test="statusList != null and statusList.size()!=0">
        AND a.status IN
        <foreach collection="statusList" item="status" index="index"
                 open="(" close=")" separator=",">
            #{status}
        </foreach>
    </if>
    ORDER BY a.create_time desc
    LIMIT (#{pageNo}-1)*#{pageSize},#{pageSize};  // 錯(cuò)誤
</select>

在MyBatis中LIMIT之后的語句不允許的變量不允許進(jìn)行算數(shù)運(yùn)算,會(huì)報(bào)錯(cuò)。

正確的寫法一

<select id="queryMyApplicationRecord" parameterType="MyApplicationRequest" resultMap="myApplicationMap">
    SELECT
    a.*,
    FROM
    tb_user a
    WHERE 1=1
    <if test="ids != null and ids.size()!=0">
        AND a.id IN
        <foreach collection="ids" item="id" index="index"
                 open="(" close=")" separator=",">
            #{id}
        </foreach>
    </if>
    <if test="statusList != null and statusList.size()!=0">
        AND a.status IN
        <foreach collection="statusList" item="status" index="index"
                 open="(" close=")" separator=",">
            #{status}
        </foreach>
    </if>
    ORDER BY a.create_time desc
    LIMIT ${(pageNo-1)*pageSize},${pageSize}; (正確)
</select>

正確的寫法二:(推薦)

<select id="queryMyApplicationRecord" parameterType="MyApplicationRequest" resultMap="myApplicationMap">
    SELECT
    a.*,
    FROM
    tb_user a
    WHERE 1=1
    <if test="ids != null and ids.size()!=0">
        AND a.id IN
        <foreach collection="ids" item="id" index="index"
                 open="(" close=")" separator=",">
            #{id}
        </foreach>
    </if>
    <if test="statusList != null and statusList.size()!=0">
        AND a.status IN
        <foreach collection="statusList" item="status" index="index"
                 open="(" close=")" separator=",">
            #{status}
        </foreach>
    </if>
    ORDER BY a.create_time desc
    LIMIT #{offSet},#{limit}; (推薦,代碼層可控)
</select>

分析:

方法二的寫法,需要再請(qǐng)求參數(shù)中額外設(shè)置兩個(gè)get函數(shù),如下:

@Data
public class QueryParameterVO {
 
    private List<String> ids;
 
    private List<Integer> statusList;
 
    // 前端傳入的頁碼
    private int pageNo;  // 從1開始
 
    // 每頁的條數(shù)
    private int pageSize;
 
    // 數(shù)據(jù)庫的偏移
    private int offSet;
 
    // 數(shù)據(jù)庫的大小限制
    private int limit;
 
    // 這里重寫offSet和limit的get方法
    public int getOffSet() {
        return (pageNo-1)*pageSize;
    }
 
    public int getLimit() {
        return pageSize;
    }
}

總結(jié)

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

相關(guān)文章

  • Java封裝、繼承、多態(tài)三大特征的理解

    Java封裝、繼承、多態(tài)三大特征的理解

    封裝、繼承、多態(tài)三大特征是java中比較常用的,務(wù)必要掌握,下面給大家介紹Java封裝、繼承、多態(tài)三大特征的理解,有不清楚的朋友可以一起學(xué)習(xí)下
    2016-06-06
  • MyBatis-Plus實(shí)現(xiàn)多表聯(lián)查的方法實(shí)戰(zhàn)

    MyBatis-Plus實(shí)現(xiàn)多表聯(lián)查的方法實(shí)戰(zhàn)

    這篇文章主要給大家介紹了關(guān)于MyBatis-Plus實(shí)現(xiàn)多表聯(lián)查的方法,MyBatis Plus是一款針對(duì)MyBatis框架的增強(qiáng)工具,它提供了很多方便的方法來實(shí)現(xiàn)多表聯(lián)查,需要的朋友可以參考下
    2023-07-07
  • java調(diào)用FFmpeg實(shí)現(xiàn)視屏壓縮功能的詳細(xì)步驟

    java調(diào)用FFmpeg實(shí)現(xiàn)視屏壓縮功能的詳細(xì)步驟

    這篇文章主要介紹了java調(diào)用FFmpeg實(shí)現(xiàn)視屏壓縮功能,本文簡單的展示了java調(diào)用FFmpeg命令實(shí)現(xiàn)視屏的壓縮的詳細(xì)步驟,需要的朋友可以參考下
    2021-09-09
  • Java?Stream函數(shù)式編程管道流結(jié)果處理

    Java?Stream函數(shù)式編程管道流結(jié)果處理

    這篇文章主要為大家介紹了Java?Stream函數(shù)式編程管道流結(jié)果處理的示例過程解析需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步
    2022-03-03
  • Springboot單元測試編寫實(shí)踐

    Springboot單元測試編寫實(shí)踐

    在日常的開發(fā)過程中,為了提高代碼的可靠性和健壯性,同時(shí)也是檢測代碼的質(zhì)量,減少測試環(huán)節(jié)的問題,會(huì)對(duì)完成的業(yè)務(wù)功能代碼編寫單元測試,在本文中,將分享一些單元測試的實(shí)踐和心得,需要的朋友可以參考下
    2023-11-11
  • 從源碼角度看spring mvc的請(qǐng)求處理過程

    從源碼角度看spring mvc的請(qǐng)求處理過程

    這篇文章主要介紹了從源碼角度看spring mvc的請(qǐng)求處理過程,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,,需要的朋友可以參考下
    2019-06-06
  • java設(shè)計(jì)模式-組合模式詳解

    java設(shè)計(jì)模式-組合模式詳解

    這篇文章主要介紹了JAVA設(shè)計(jì)模式之組合模式,簡單說明了組合模式的原理,并結(jié)合實(shí)例分析了java組合模式的具體用法,需要的朋友可以參考下
    2021-07-07
  • Java中的分布式鎖與同步鎖使用詳解

    Java中的分布式鎖與同步鎖使用詳解

    這篇文章主要介紹了Java中的分布式鎖與同步鎖使用詳解,在分布式系統(tǒng)中,由于存在多個(gè)節(jié)點(diǎn)并行執(zhí)行任務(wù),可能會(huì)出現(xiàn)競爭條件和數(shù)據(jù)不一致的問題,分布式鎖通過約束同一時(shí)刻只有一個(gè)節(jié)點(diǎn)能夠獲得鎖的方式,確保了對(duì)共享資源的獨(dú)占訪問,需要的朋友可以參考下
    2023-07-07
  • URLConnection發(fā)送HTTP請(qǐng)求的方法_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    URLConnection發(fā)送HTTP請(qǐng)求的方法_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

    這篇文章主要介紹了URLConnection發(fā)送HTTP請(qǐng)求的方法,主要介紹了如何通過Java(模擬瀏覽器)發(fā)送HTTP請(qǐng)求,有興趣的可以了解一下
    2017-07-07
  • Java中各種集合判空方法總結(jié)

    Java中各種集合判空方法總結(jié)

    最近接觸集合比較多,經(jīng)常對(duì)于集合是否為空做判斷,下面這篇文章主要給大家介紹了關(guān)于Java中各種集合判空方法總結(jié)的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2023-12-12

最新評(píng)論