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

Java中Mybatis分頁(yè)查詢的四種傳參方式

 更新時(shí)間:2023年03月31日 09:45:26   作者:會(huì)洗碗的CV工程師  
這篇文章主要介紹了Java中Mybatis分頁(yè)查詢的四種傳參方式:順序傳參,@param傳參,自定義POJO類(lèi)傳參,Map傳參,想詳細(xì)了解傳參方式的小伙伴可以詳細(xì)閱讀本文,有一定的而參考價(jià)值

 如果我們也想要像下圖那種分頁(yè)查詢的方式,那么我們應(yīng)該怎么做才可以呢?

分頁(yè)查詢時(shí),Sql語(yǔ)句使用limit關(guān)鍵字,需要傳入開(kāi)始索引和每頁(yè)條數(shù)兩個(gè)參數(shù)。MyBatis的多參數(shù)處理有以下方式:

一、順序傳參

Sql中的參數(shù)使用arg0,arg1...或param1,param2...表示參數(shù)的順序。此方法可讀性較低,在開(kāi)發(fā)中不建議使用。但是我這里測(cè)試的時(shí)候,參數(shù)可以隨便定義的,并不一定按照上述的格式來(lái)定義

 1. 持久層接口方法

/**
     * 分頁(yè)查詢 -- 順序傳參
     * @param startIndex 開(kāi)始索引
     * @param pageSize 每頁(yè)條數(shù)
     * @return
     */
    List<User> findPage(int startIndex,int pageSize);

2. UserMapper.xml映射文件新增標(biāo)簽

<!-- 分頁(yè)查詢-順序傳參 -->
    <select id="findPage" resultType="com.mybatisstudy.pojo.User">
        select * from user limit #{param1},#{param2}
    </select>

這里我發(fā)現(xiàn)不用定義參數(shù)類(lèi)型類(lèi)型也可以 

3. 新增測(cè)試方法

// 測(cè)試分頁(yè)查詢方法 -- 順序傳參
    @Test
    public void testFindPage(){
        List<User> users = userMapper.findPage(0,3);
        users.forEach(System.out::println);
    }

4. 運(yùn)行結(jié)果

由于這里的起始條數(shù)是從0開(kāi)始,數(shù)據(jù)的id從1開(kāi)始,所以,別驚訝

二、@param傳參

在接口方法的參數(shù)列表中通過(guò)@Param定義參數(shù)名稱,在Sql語(yǔ)句中通過(guò)注解中所定義的參數(shù)名稱指定參數(shù)位置。此方式參數(shù)比較直觀的,推薦使用。

 1. 持久層接口方法

/**
     * 分頁(yè)查詢 -- @param傳參
     * @param startIndex 開(kāi)始索引
     * @param pageSize 每頁(yè)條數(shù)
     * @return
     */
    List<User> findPage1(@Param("startIndex")int startIndex,@Param("pageSize")int pageSize);

2. UserMapper.xml映射文件新增標(biāo)簽

<!-- 分頁(yè)查詢-@param傳參 -->
    <select id="findPage1" resultType="com.mybatisstudy.pojo.User">
        select * from user limit #{startIndex},#{pageSize}
    </select>

注意,這里里面的參數(shù)就一定要和持久層接口的參數(shù)一致,否則就會(huì)報(bào)錯(cuò) 

 3. 新增測(cè)試方法

// 測(cè)試分頁(yè)查詢方法 -- @param傳參
    @Test
    public void testFindPage1(){
        List<User> users = userMapper.findPage1(3,3);
        users.forEach(System.out::println);
    }

4. 運(yùn)行結(jié)果

三、自定義POJO類(lèi)傳參

自定義POJO類(lèi),該類(lèi)的屬性就是要傳遞的參數(shù),在SQL語(yǔ)句中綁定參數(shù)時(shí)使用POJO的屬性名作為參數(shù)名即可。此方式推薦使用。

 1. 自定義POJO類(lèi)

由于這里我們需要兩個(gè)參數(shù),一個(gè)是查詢開(kāi)始條數(shù),一個(gè)是每頁(yè)有多少條數(shù),所以這個(gè)pojo類(lèi)只需要兩個(gè)參數(shù)即可

package com.mybatisstudy.pojo;
 
public class PageQuery {
    private int startIndex;
    private int pageSize;
 
    public PageQuery(int i, int i1) {
        this.startIndex = i;
        this.pageSize = i1;
    }
 
    public int getStartIndex() {
        return startIndex;
    }
 
    public void setStartIndex(int startIndex) {
        this.startIndex = startIndex;
    }
 
    public int getPageSize() {
        return pageSize;
    }
 
    public void setPageSize(int pageSize) {
        this.pageSize = pageSize;
    }
}

2. 持久層接口方法

/**
     * 分頁(yè)查詢 -- POJO傳參
     * @param PageQuery
     * @return
     */
    List<User> findPage2(PageQuery pageQuery);

3. UserMapper.xml映射文件新增標(biāo)簽

<!-- 分頁(yè)查詢-POJO傳參 -->
    <select id="findPage2" resultType="com.mybatisstudy.pojo.User" parameterType="com.mybatisstudy.pojo.PageQuery">
        select * from user limit #{startIndex},#{pageSize}
    </select>

   這里同樣需要注意的是,參數(shù)名稱要和自定義的POJO類(lèi)的成員變量名要一致,否則同樣會(huì)報(bào)錯(cuò) 

 4. 新增測(cè)試方法

// 測(cè)試分頁(yè)查詢方法 -- POJO傳參
    @Test
    public void testFindPage2(){
        PageQuery pageQuery = new PageQuery(2,3);
        List<User> users = userMapper.findPage2(pageQuery);
        users.forEach(System.out::println);
    }

5. 運(yùn)行結(jié)果

四、Map傳參

如果不想自定義POJO,可以使用Map作為傳遞參數(shù)的載體,在SQL語(yǔ)句中綁定參數(shù)時(shí)使用Map的Key作為參數(shù)名即可。此方法推薦使用

 1. 持久層接口方法

/**
     * 分頁(yè)查詢 -- Map傳參
     * @param Map
     * @return
     */
    List<User> findPage3(Map<String,Object> params);

2. UserMapper.xml映射文件新增標(biāo)簽

<!-- 分頁(yè)查詢-Map傳參 -->
    <select id="findPage3" resultType="com.mybatisstudy.pojo.User" parameterType="map">
        select * from user limit #{startIndex},#{pageSize}
    </select>

這里同樣需要注意的是,參數(shù)個(gè)數(shù)要和你map集合的個(gè)數(shù)一致,并且參數(shù)名稱要和map集合里面的key的名稱要一致,否則同樣報(bào)錯(cuò)

 3. 新增測(cè)試方法

// 測(cè)試分頁(yè)查詢方法 -- Map傳參
    @Test
    public void testFindPage3(){
        Map<String,Object> params = new HashMap<>();
        params.put("startIndex",0);
        params.put("pageSize",4);
        List<User> users = userMapper.findPage3(params);
        users.forEach(System.out::println);
    }

4. 運(yùn)行結(jié)果

OK,以上就是mybatis分頁(yè)查詢時(shí)可以用到的四種傳參方式,簡(jiǎn)單易上手,快來(lái)和我一起操作吧 ~

到此這篇關(guān)于Mybatis分頁(yè)查詢的四種傳參方式的文章就介紹到這了,更多相關(guān)Mybatis分頁(yè)查詢內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 深入探究SpringBoot中的Sleuth用法

    深入探究SpringBoot中的Sleuth用法

    Sleuth是一個(gè)分布式跟蹤系統(tǒng),用于跟蹤應(yīng)用程序中的請(qǐng)求和操作,在本文中,我們將探討SpringBoot中的Sleuth是什么,以及如何使用它來(lái)跟蹤應(yīng)用程序中的請(qǐng)求和操作,感興趣的小伙伴跟著小編一起來(lái)探討吧
    2023-07-07
  • java 異常被catch后 將會(huì)繼續(xù)執(zhí)行的操作

    java 異常被catch后 將會(huì)繼續(xù)執(zhí)行的操作

    這篇文章主要介紹了java 異常被catch后 將會(huì)繼續(xù)執(zhí)行的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-02-02
  • 關(guān)于java.lang.IncompatibleClassChangeError錯(cuò)誤解決方案

    關(guān)于java.lang.IncompatibleClassChangeError錯(cuò)誤解決方案

    最近開(kāi)發(fā)中遇到類(lèi)沖突報(bào)錯(cuò) java.lang.IncompatibleClassChangeError,所以下面這篇文章主要給大家介紹了關(guān)于java.lang.IncompatibleClassChangeError錯(cuò)誤的解決方案,需要的朋友可以參考下
    2024-02-02
  • IDEA中創(chuàng)建properties配置文件

    IDEA中創(chuàng)建properties配置文件

    我們?cè)趈2ee當(dāng)中,連接數(shù)據(jù)庫(kù)的時(shí)候經(jīng)常會(huì)用到properties配置文件,本文主要介紹了IDEA中創(chuàng)建properties配置文件,具有一定的參考價(jià)值,?感興趣的可以了解一下
    2024-04-04
  • SpringBoot詳細(xì)探究講解默認(rèn)組件掃描

    SpringBoot詳細(xì)探究講解默認(rèn)組件掃描

    在項(xiàng)目中我們創(chuàng)建了Controller,這個(gè)Controller是如何被spring自動(dòng)加載的呢?為什么Controller必須放在啟動(dòng)類(lèi)的同級(jí)目錄下呢
    2022-06-06
  • Java實(shí)現(xiàn)單機(jī)版五子棋游戲的示例代碼

    Java實(shí)現(xiàn)單機(jī)版五子棋游戲的示例代碼

    五子棋是世界智力運(yùn)動(dòng)會(huì)競(jìng)技項(xiàng)目之一,是一種兩人對(duì)弈的純策略型棋類(lèi)游戲,是世界智力運(yùn)動(dòng)會(huì)競(jìng)技項(xiàng)目之一。本文將用java語(yǔ)言實(shí)現(xiàn)單機(jī)版五子棋游戲,感興趣的可以了解一下
    2022-09-09
  • HelloSpringMVC配置版實(shí)現(xiàn)步驟解析

    HelloSpringMVC配置版實(shí)現(xiàn)步驟解析

    這篇文章主要介紹了HelloSpringMVC配置版實(shí)現(xiàn)步驟解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-09-09
  • Springboot中yml文件不生效原因分析及解決

    Springboot中yml文件不生效原因分析及解決

    這篇文章給大家介紹了Springboot中yml文件不生效原因分析及解決方法,通過(guò)圖文給大家講解的非常詳細(xì),對(duì)大家解決問(wèn)題有一定的幫助,需要的朋友可以參考下
    2024-02-02
  • SpringBoot異常: nested exception is java.lang.NoClassDefFoundError: javax/servlet/ServletContext解決方案

    SpringBoot異常: nested exception is java.lang.NoClassDefFoundE

    這篇文章主要介紹了SpringBoot異常: nested exception is java.lang.NoClassDefFoundError: javax/servlet/ServletContext解決方案,說(shuō)明了錯(cuò)誤原因和解決方案,需要的朋友可以參考下
    2021-06-06
  • Spring Boot Redis 集成配置詳解

    Spring Boot Redis 集成配置詳解

    本篇文章主要介紹了Spring Boot Redis 集成配置詳解,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05

最新評(píng)論

平顺县| 如东县| 韶山市| 达孜县| 淮滨县| 禄丰县| 当雄县| 祁东县| 广丰县| 垣曲县| 木兰县| 封开县| 广南县| 福鼎市| 寿光市| 江华| 峨边| 渭源县| 林周县| 文成县| 岢岚县| 黄梅县| 章丘市| 蒲城县| 资源县| 牙克石市| 五常市| 汝南县| 响水县| 英吉沙县| 马鞍山市| 麦盖提县| 公主岭市| 揭阳市| 昌图县| 湖南省| 瑞丽市| 盈江县| 潮安县| 仙游县| 新宾|