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

MybatisPlus只取一條記錄的兩種方法實現(xiàn)

 更新時間:2025年07月29日 10:10:00   作者:杰肥啊  
本文介紹了MyBatis-Plus2.x和3.x版本在IService接口獲取單條記錄的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

不管是用MP2.X版本的還是MP3.X版本的小伙伴都會發(fā)現(xiàn),在其IService接口中 并沒有一個可以直接獲取一條記錄的方法。

MP2.x提供selectOne方法

@Override
public T selectOne(Wrapper<T> wrapper){
    return SqlHelper.getObject(baseMapper.selectList(wrapper));
}

查詢多條記錄,如果存在則返回List.get(0)位置上的數(shù)據(jù)。

MP3.x提供getOne方法

T getOne(Wrapper<T> queryWrapper,boolean throwEx){
    return throwEx?this.baseMapper.selectOne(queryWrapper):SqlHelper.getObject(this.log,this.baseMapper.selectList(queryWrapper));
}

getOne方法只不過是在2.x的selectOne方法上多了一個布爾值,意思就是如果為true,則就是查詢多條記錄就會拋異常,如果為false,則查詢多條記錄后,取get(0)第一個位置記錄返回。

不難看出,不管是selectOne還是getOne 底層調用的是selectList,有些人會說了,正常情況下,自己調用selectOne的數(shù)據(jù),基本也是唯一。 但是在有些情況下,通過selectOne調用再由selectList的一些sql獲取到的結果其實是多條甚至是成百上千條(有時候真的會遇到),可是你只會看到第一條數(shù)據(jù)。雖然說業(yè)務上并不會影響你們,但是你想過沒有,如果稍有不慎你的sql查詢的結果在數(shù)據(jù)庫里是10000條,而這個查詢經(jīng)常被調用,也就是說10000條數(shù)據(jù)返回被加載在內存,然后就給了你一條,你是爽了,服務器有負擔了。所以我們需要一個在sql語句階段就能限制查詢一條的結果的東西,那毋庸置疑就是LIMIT 1,那如何使用LIMIT 1 有以下兩種常用寫法。

第一種寫法

mapper.xml中寫一個關于本次查詢的sql ,尾部加上 limit 1

SELECT 
	colum1,colum2,colum3 
FROM 
	table1 
WHERE 
	條件 
LIMIT 1

這種寫法有一個不好的地方在哪里呢,對于單表查詢來說的話,不友善,幾乎你條件一變,要么你用if標簽,要么你就得再寫一次sql語句。反正個人就覺得挺丑的。

第二種寫法

在MP提供的 Wrapper接口的實現(xiàn)類中都存在一個 last方法 用來最后拼接一個sql片段,在這里我們加一個limit 1。

public Children last(boolean condition, String lastSql) {
        if (condition) {
            this.lastSql.setStringValue(" " + lastSql);
        }

        return this.typedThis;
}

日常開發(fā)的時候基本就這么寫

2.x寫法

xxService.selectOne(new EntityWrapper().eq().eq().last("limit 1"));

3.x寫法

xxService.selectOne(new QueryWrapper().eq().eq().last("limit 1"));

但是這也有一個挺惡心人的地方,就是這last放這 加上 limit 1 還是魔法值,挺難看的。所以可以變成以下封裝。

你創(chuàng)建Service接口的時候一定會集成MP中的IService接口,所以就在這里利用java 8的新特性(接口的默認實現(xiàn)方法)來完成封裝.

這里的xxx指的是你業(yè)務中的某個實體類,懂的都懂。

2.x寫法

public interface xxxService extends IService<xxx>{
    /**
     * 僅有一條數(shù)據(jù)
     * @param wrapper
     * @return
     */
    default xxx getOnly(EntityWrapper<xxx> wrapper){
        wrapper.last("limit 1");
        return this.selectOne(wrapper);
    };
}

3.x寫法

public interface xxxService extends IService<xxx>{
    /**
     * 僅有一條數(shù)據(jù)
     * @param wrapper
     * @return
     */
    default xxx getOnly(QueryWrapper<xxx> wrapper){
        wrapper.last("limit 1");
        return this.getOne(wrapper);
    };
}

這樣,你就可以將代碼中的selectOne方法 無縫替換了。

到此這篇關于MybatisPlus如何只取一條記錄的文章就介紹到這了,更多相關MybatisPlus只取一條記錄內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Spinrg WebFlux中Cookie的讀寫的示例

    Spinrg WebFlux中Cookie的讀寫的示例

    這篇文章主要介紹了Spinrg WebFlux中Cookie的讀寫的示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2019-01-01
  • Hadoop上Data Locality的詳解

    Hadoop上Data Locality的詳解

    這篇文章主要介紹了 Hadoop上Data Locality的詳解的相關資料,希望通過本文能幫助到大家,讓大家理解掌握這部分內容,需要的朋友可以參考下
    2017-10-10
  • 教你怎么用Java操作Redis

    教你怎么用Java操作Redis

    今天帶大家來學習怎么用Java操作Redis,文中有非常詳細的介紹,對正在學習java的小伙伴們有很好的幫助,建議有redis基礎并熟悉redis的基本數(shù)據(jù)類型命令的小伙伴學習,需要的朋友可以參考下
    2021-05-05
  • Mybatis-plus中QueryWrapper的多種用法小結

    Mybatis-plus中QueryWrapper的多種用法小結

    本文主要介紹了Mybatis-plus中QueryWrapper的多種用法小結,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2023-04-04
  • Java BigDecimal除法精度和格式化輸出方式

    Java BigDecimal除法精度和格式化輸出方式

    這篇文章主要介紹了Java BigDecimal除法精度和格式化輸出方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • spring mvc url匹配禁用后綴訪問操作

    spring mvc url匹配禁用后綴訪問操作

    這篇文章主要介紹了spring mvc url匹配禁用后綴訪問操作,具有很好的參考價值,希望對大家有所幫助。以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家
    2021-07-07
  • Spring Hystrix熔斷報警原理圖例解析

    Spring Hystrix熔斷報警原理圖例解析

    這篇文章主要介紹了Spring Hystrix熔斷報警原理圖例解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03
  • java代碼實現(xiàn)俄羅斯方塊

    java代碼實現(xiàn)俄羅斯方塊

    這篇文章主要為大家詳細介紹了java代碼實現(xiàn)俄羅斯方塊,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2018-06-06
  • MyBatis Mapper.xml核心屬性示例詳解

    MyBatis Mapper.xml核心屬性示例詳解

    文章詳解MyBatis Mapper.xml中statement標簽的核心屬性,涵蓋SQL映射、執(zhí)行控制、緩存管理及動態(tài)SQL,強調靈活配置對開發(fā)效率和系統(tǒng)性能的重要性,感興趣的朋友一起看看吧
    2025-07-07
  • AsyncHttpClient的ConnectionSemaphore方法源碼流程解讀

    AsyncHttpClient的ConnectionSemaphore方法源碼流程解讀

    這篇文章主要為大家介紹了AsyncHttpClient的ConnectionSemaphore方法源碼流程解讀,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-12-12

最新評論