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

Mybatis Plus LambdaQueryWrapper的具體用法

 更新時間:2023年11月09日 11:04:29   作者:后端碼匠  
Mybatis Plus 在其基礎(chǔ)上擴(kuò)展了 LambdaQueryWrapper,LambdaQueryWrapper 提供了更加簡便的查詢語法,同時也避免了SQL注入的風(fēng)險,感興趣的可以了解一下

前言

為了更方便的實(shí)現(xiàn)動態(tài) SQL,Mybatis Plus 在其基礎(chǔ)上擴(kuò)展了 LambdaQueryWrapper,LambdaQueryWrapper 提供了更加簡便的查詢語法,同時也避免了 SQL 注入的風(fēng)險。

LambdaQueryWrapper 實(shí)現(xiàn)了 QueryWrapper 的全部功能,并提供了基于 Lambda 表達(dá)式的查詢方式,使得查詢語法更加優(yōu)雅。使用 LambdaQueryWrapper,可以方便的實(shí)現(xiàn)各種查詢條件的拼接,如 whereand、orin、likebetween 等條件。

LambdaQueryWrapper 通過函數(shù)式編程的方式,提供了多種方法用于實(shí)現(xiàn)各種查詢條件的拼接,這些方法包括 eq、ne、gt、ge、lt、le、in、notIn、like、notLike、between、notBetween、isNull、isNotNull 等。

與QueryWrapper對比

LambdaQueryWrapper 和 QueryWrapper 都是 Mybatis Plus 中的查詢條件封裝類,其中 LambdaQueryWrapper 是基于 Lambda 表達(dá)式的實(shí)現(xiàn),而 QueryWrapper 是基于字符串的實(shí)現(xiàn)。它們的優(yōu)缺點(diǎn)如下:

LambdaQueryWrapper 優(yōu)點(diǎn)

  • 代碼簡潔,易讀易寫,使用 Lambda 表達(dá)式可避免手寫字符串繁瑣容易出錯;
  • 類型安全,LambdaQueryWrapper 在編譯期間就能夠捕獲類型錯誤,避免運(yùn)行時出現(xiàn)類型錯誤;
  • 更加靈活,LambdaQueryWrapper 支持鏈?zhǔn)秸{(diào)用,支持多個條件之間的 and 和 or 關(guān)系組合,支持子查詢等復(fù)雜查詢操作。

LambdaQueryWrapper 缺點(diǎn)

  • LambdaQueryWrapper 基于 Lambda 表達(dá)式實(shí)現(xiàn),可能存在一些性能問題,在大數(shù)據(jù)量查詢時可能會影響查詢性能。

QueryWrapper 優(yōu)點(diǎn)

  • 在少量數(shù)據(jù)查詢時,QueryWrapper 通常比 LambdaQueryWrapper 更快,因?yàn)樗?code>不需要解析 Lambda 表達(dá)式;
  • QueryWrapper 更加靈活,可以使用字符串直接拼接 SQL,支持 SQL 函數(shù)等更多高級查詢操作;
  • 對于老舊代碼,QueryWrapper 更加適合兼容擴(kuò)展。

QueryWrapper 缺點(diǎn)

  • 代碼可讀性和可維護(hù)性較差,手寫 SQL 字符串容易出錯,并且不易于維護(hù)修改
  • 使用字符串拼接 SQL,容易受到 SQL 注入攻擊,需要特別注意防范;
  • 編譯期不能捕獲類型錯誤,需要在運(yùn)行時才能發(fā)現(xiàn)類型錯誤。

綜上推薦使用 LambdaQueryWrapper(此外,LambdaQueryWrapper 還具有良好的兼容性和擴(kuò)展性,可以輕松適應(yīng)不同的業(yè)務(wù)需求,提高開發(fā)效率和代碼質(zhì)量)。

案例

簡單查詢

LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(User::getUsername, "張三")
        .and(w -> w.between(User::getAge, 18, 30)
                .or().eq(User::getGender, 1))
        .orderByDesc(User::getCreateTime);

List<User> userList = userMapper.selectList(wrapper);

首先創(chuàng)建了一個 LambdaQueryWrapper 對象,然后通過 eq 方法添加一個等于條件,表示查詢用戶名為“張三”的用戶。接著,使用 and 方法添加一個條件組,該組包含了一個 between 條件和一個 or 條件,分別表示查詢年齡在 18 到 30 之間的用戶,或者查詢性別為 1 的用戶。注意,條件組中的多個條件之間默認(rèn)是 and 的關(guān)系,可以通過 or 方法切換為 or 的關(guān)系。最后,使用 orderByDesc 方法對查詢結(jié)果進(jìn)行排序,按照創(chuàng)建時間倒序排列。

使用 LambdaQueryWrapper 進(jìn)行查詢時,還可以通過 select 方法來自定義查詢字段,從而實(shí)現(xiàn)對查詢結(jié)果的靈活控制。

select

LambdaQueryWrapper<User> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(User::getAge, 20)
        .select(User::getId, User::getUserName, User::getAge);

List<User> userList = userMapper.selectList(wrapper);

首先通過 LambdaQueryWrapper 對象創(chuàng)建了一個查詢條件,然后使用 eq 方法添加了一個等于條件,表示查詢年齡為 20 的用戶。接著,通過 select 方法來自定義查詢字段,只查詢 id、username、age 三個字段,這些字段是以逗號分隔的字符串形式傳入的。最后,調(diào)用 selectList 方法執(zhí)行查詢操作,得到查詢結(jié)果。

到此這篇關(guān)于Mybatis Plus LambdaQueryWrapper的具體用法的文章就介紹到這了,更多相關(guān)Mybatis Plus LambdaQueryWrapper內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Java裁剪壓縮PNG圖片,透明背景色變黑的解決方案

    Java裁剪壓縮PNG圖片,透明背景色變黑的解決方案

    這篇文章主要介紹了Java裁剪壓縮PNG圖片,透明背景色變黑的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • Java使用Spring發(fā)送郵件的實(shí)現(xiàn)代碼

    Java使用Spring發(fā)送郵件的實(shí)現(xiàn)代碼

    本篇文章主要介紹了使用Spring發(fā)送郵件的實(shí)現(xiàn)代碼,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-03-03
  • 詳解自動注冊Gateway網(wǎng)關(guān)路由配置

    詳解自動注冊Gateway網(wǎng)關(guān)路由配置

    這篇文章主要為大家介紹了自動注冊Gateway網(wǎng)關(guān)路由配置的方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • mybatisplus中的xml對象參數(shù)傳遞問題

    mybatisplus中的xml對象參數(shù)傳遞問題

    這篇文章主要介紹了mybatisplus中的xml對象參數(shù)傳遞問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • ZooKeeper框架教程Curator分布式鎖實(shí)現(xiàn)及源碼分析

    ZooKeeper框架教程Curator分布式鎖實(shí)現(xiàn)及源碼分析

    本文是ZooKeeper入門系列教程,本篇為大家介紹zookeeper一個優(yōu)秀的框架Curator,提供了各種分布式協(xié)調(diào)的服務(wù),Curator中有著更為標(biāo)準(zhǔn)、規(guī)范的分布式鎖實(shí)現(xiàn)
    2022-01-01
  • 史上最全面的Spring Boot配置文件深入講解

    史上最全面的Spring Boot配置文件深入講解

    Springboot極大的簡化了Spring框架的使用配置流程,在核心配置文件里,幾乎可以完成所有的配置工作,下面這篇文章主要給大家介紹了關(guān)于Spring Boot配置文件的相關(guān)資料,文中介紹的非常全面,需要的朋友可以參考下
    2018-12-12
  • java實(shí)現(xiàn)兩個線程交替打印的實(shí)例代碼

    java實(shí)現(xiàn)兩個線程交替打印的實(shí)例代碼

    在本篇文章里小編給大家整理的是一篇關(guān)于java實(shí)現(xiàn)兩個線程交替打印的相關(guān)知識點(diǎn)內(nèi)容,有需要的朋友們參考下。
    2019-12-12
  • springboot集成elasticsearch7的圖文方法

    springboot集成elasticsearch7的圖文方法

    本文記錄springboot集成elasticsearch7的方法,本文通過圖文實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2021-05-05
  • Springcloud中的region和zone的使用實(shí)例

    Springcloud中的region和zone的使用實(shí)例

    這篇文章主要介紹了Springcloud中的region和zone的使用實(shí)例,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2019-10-10
  • 利用Maven實(shí)現(xiàn)將代碼打包成第三方公共jar包

    利用Maven實(shí)現(xiàn)將代碼打包成第三方公共jar包

    在項(xiàng)目開發(fā)過程中,我們經(jīng)常需要將一些公共方法提取出來,然后單獨(dú)封裝成一個第三方公共jar包,采用普通的方式打包后的jar,依賴的工程執(zhí)行編譯時,卻提示找不到對應(yīng)的依賴包,那么如何將工程打包為可執(zhí)行jar包呢?下面向大家分享三種方法
    2022-10-10

最新評論