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

Mybatis Plus LambdaQueryWrapper的具體用法

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

前言

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

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

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

與QueryWrapper對比

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

LambdaQueryWrapper 優(yōu)點

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

LambdaQueryWrapper 缺點

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

QueryWrapper 優(yōu)點

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

QueryWrapper 缺點

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

綜上推薦使用 LambdaQueryWrapper(此外,LambdaQueryWrapper 還具有良好的兼容性和擴展性,可以輕松適應(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 的用戶。注意,條件組中的多個條件之間默認是 and 的關(guān)系,可以通過 or 方法切換為 or 的關(guān)系。最后,使用 orderByDesc 方法對查詢結(jié)果進行排序,按照創(chuàng)建時間倒序排列。

使用 LambdaQueryWrapper 進行查詢時,還可以通過 select 方法來自定義查詢字段,從而實現(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使用字節(jié)流復制文件的方法

    Java使用字節(jié)流復制文件的方法

    這篇文章主要為大家詳細介紹了Java使用字節(jié)流復制文件的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • SpringBoot創(chuàng)建RSocket服務(wù)器的全過程記錄

    SpringBoot創(chuàng)建RSocket服務(wù)器的全過程記錄

    RSocket應(yīng)用層協(xié)議支持 Reactive Streams語義, 例如:用RSocket作為HTTP的一種替代方案。這篇文章主要給大家介紹了關(guān)于SpringBoot創(chuàng)建RSocket服務(wù)器的相關(guān)資料,需要的朋友可以參考下
    2021-05-05
  • Java 給PDF簽名時添加可信時間戳的方法

    Java 給PDF簽名時添加可信時間戳的方法

    這篇文章主要介紹了Java 給PDF簽名時添加可信時間戳,關(guān)于jar導入的問題,本文給大家?guī)韮煞N方法,一種是手動導入另一種是maven配置導入,需要的朋友可以參考下
    2021-07-07
  • SSM框架通過mybatis-generator自動生成代碼(推薦)

    SSM框架通過mybatis-generator自動生成代碼(推薦)

    這篇文章主要介紹了SSM框架通過mybatis-generator自動生成代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2017-11-11
  • SpringBoot使用Graylog日志收集的實現(xiàn)示例

    SpringBoot使用Graylog日志收集的實現(xiàn)示例

    Graylog是一個生產(chǎn)級別的日志收集系統(tǒng),集成Mongo和Elasticsearch進行日志收集,這篇文章主要介紹了SpringBoot使用Graylog日志收集的實現(xiàn)示例,感興趣的小伙伴們可以參考一下
    2019-04-04
  • 淺談MyBatis循環(huán)Map(高級用法)

    淺談MyBatis循環(huán)Map(高級用法)

    這篇文章主要介紹了淺談MyBatis循環(huán)Map(高級用法),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-09-09
  • JAVA 開發(fā)之用靜態(tài)方法返回類名的實例詳解

    JAVA 開發(fā)之用靜態(tài)方法返回類名的實例詳解

    這篇文章主要介紹了JAVA 開發(fā)之用靜態(tài)方法返回類名的實例詳解的相關(guān)資料,這里主要說明使用異常來得到類名,希望能幫助到大家,需要的朋友可以參考下
    2017-08-08
  • 踩坑批量更新sql報錯,實際sql能夠正常執(zhí)行的問題

    踩坑批量更新sql報錯,實際sql能夠正常執(zhí)行的問題

    在項目工程遷移過程中,遇到了一個批量更新接口在新工程中報錯的問題,通過分析,排除了代碼錯誤的可能,最終發(fā)現(xiàn)是由于數(shù)據(jù)庫連接配置不當導致的,在jdbc連接字符串中加入allowMultiQueries=true參數(shù)后,問題得以解決,這個參數(shù)的作用是允許SQL批量執(zhí)行
    2022-12-12
  • 通過實踐了解如何處理Java異常

    通過實踐了解如何處理Java異常

    Java中的異常處理不是一個簡單的主題。初學者發(fā)現(xiàn)它很難理解,甚至有經(jīng)驗的開發(fā)者也可以花幾個小時討論如何以及應(yīng)該拋出或處理哪些異常。下面我們通過實踐來了解如何解決異常
    2019-05-05
  • Java 對象序列化 NIO NIO2詳細介紹及解析

    Java 對象序列化 NIO NIO2詳細介紹及解析

    這篇文章主要介紹了Java 對象序列化 NIO NIO2詳細介紹及解析的相關(guān)資料,序列化機制可以使對象可以脫離程序的運行而對立存在,需要的朋友可以參考下
    2017-02-02

最新評論

珠海市| 武胜县| 河间市| 云林县| 新津县| 无为县| 惠安县| 锡林浩特市| 峨眉山市| 荃湾区| 贵德县| 越西县| 白河县| 遂溪县| 女性| 老河口市| 天镇县| 申扎县| 庆云县| 田阳县| 深泽县| 孟津县| 平邑县| 汉中市| 寿光市| 利川市| 沙湾县| 大港区| 忻州市| 平度市| 大竹县| 九龙坡区| 海原县| 宁夏| 赞皇县| 阿克苏市| 藁城市| 札达县| 马关县| 大悟县| 博野县|