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

Java中Mybatis分頁查詢的四種傳參方式

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

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

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

一、順序傳參

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

 1. 持久層接口方法

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

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

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

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

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

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

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

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

二、@param傳參

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

 1. 持久層接口方法

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

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

<!-- 分頁查詢-@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è)試分頁查詢方法 -- @param傳參
    @Test
    public void testFindPage1(){
        List<User> users = userMapper.findPage1(3,3);
        users.forEach(System.out::println);
    }

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

三、自定義POJO類傳參

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

 1. 自定義POJO類

由于這里我們需要兩個(gè)參數(shù),一個(gè)是查詢開始條數(shù),一個(gè)是每頁有多少條數(shù),所以這個(gè)pojo類只需要兩個(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. 持久層接口方法

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

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

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

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

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

// 測(cè)試分頁查詢方法 -- 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語句中綁定參數(shù)時(shí)使用Map的Key作為參數(shù)名即可。此方法推薦使用

 1. 持久層接口方法

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

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

<!-- 分頁查詢-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è)試分頁查詢方法 -- 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分頁查詢時(shí)可以用到的四種傳參方式,簡(jiǎn)單易上手,快來和我一起操作吧 ~

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

相關(guān)文章

  • 深入探究SpringBoot中的Sleuth用法

    深入探究SpringBoot中的Sleuth用法

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

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

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

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

    最近開發(fā)中遇到類沖突報(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ù)庫的時(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)類的同級(jí)目錄下呢
    2022-06-06
  • Java實(shí)現(xiàn)單機(jī)版五子棋游戲的示例代碼

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

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

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

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

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

    這篇文章給大家介紹了Springboot中yml文件不生效原因分析及解決方法,通過圖文給大家講解的非常詳細(xì),對(duì)大家解決問題有一定的幫助,需要的朋友可以參考下
    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解決方案,說明了錯(cuò)誤原因和解決方案,需要的朋友可以參考下
    2021-06-06
  • Spring Boot Redis 集成配置詳解

    Spring Boot Redis 集成配置詳解

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

最新評(píng)論

西畴县| 阿拉尔市| 台南县| 宁波市| 深州市| 镇原县| 毕节市| 慈溪市| 驻马店市| 怀仁县| 侯马市| 南汇区| 宜川县| 南开区| 二连浩特市| 吉水县| 松阳县| 额尔古纳市| 饶河县| 收藏| 外汇| 平原县| 通州区| 眉山市| 方山县| 岑巩县| 青冈县| 扶余县| 富平县| 永和县| 沙田区| 独山县| 长治市| 班戈县| 慈利县| 清水县| 犍为县| 阿克| 平乐县| 沛县| 团风县|