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

MyBatis-Plus中的LambdaQuery用法實(shí)例詳解

 更新時(shí)間:2025年07月12日 10:38:07   作者:野犬寒鴉  
LambdaQueryWrapper是MyBatis-Plus的類型安全查詢工具,通過(guò)Lambda表達(dá)式簡(jiǎn)化條件構(gòu)建,避免硬編碼字段名,提升代碼可讀性、維護(hù)性及重構(gòu)友好性,適用于單表查詢場(chǎng)景,本文給大家介紹MyBatis-Plus中的LambdaQuery用法,感興趣的朋友一起看看吧

核心概括:LambdaQueryWrapper 本質(zhì)上是一個(gè)條件包裝器(與wrapper類似),而 Mapper 方法(如 selectList)負(fù)責(zé)補(bǔ)充完整的 SQL 結(jié)構(gòu)

在 Java 后端開(kāi)發(fā)中(特別是使用 MyBatis-Plus 框架時(shí)),LambdaQuery() 是一種基于 Lambda 表達(dá)式的類型安全查詢方式,它利用 Java 8 的 Lambda 特性,避免了硬編碼字段名,提升了代碼可讀性和可維護(hù)性。

核心優(yōu)勢(shì)

  1. 類型安全:編譯器檢查字段引用,避免拼寫錯(cuò)誤
  2. 代碼可讀性:鏈?zhǔn)秸{(diào)用,語(yǔ)義清晰
  3. 重構(gòu)友好:字段名修改后 IDE 自動(dòng)更新 Lambda 引用

基本使用步驟(MyBatis-Plus 示例)

1. 創(chuàng)建 Lambda 查詢包裝器

import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
// 泛型指定實(shí)體類型
LambdaQueryWrapper<User> lambdaQuery = new LambdaQueryWrapper<>();

2. 鏈?zhǔn)綐?gòu)建查詢條件

lambdaQuery
    .eq(User::getName, "John")      // WHERE name = 'John'
    .gt(User::getAge, 18)           // AND age > 18
    .like(User::getEmail, "@gmail") // AND email LIKE '%@gmail%'
    .orderByDesc(User::getCreateTime); // ORDER BY create_time DESC

3. 執(zhí)行查詢

// 注入 Mapper(MyBatis-Plus 的 BaseMapper)
@Autowired
private UserMapper userMapper;
public List<User> queryUsers() {
    return userMapper.selectList(lambdaQuery);
}

常用方法詳解 & 示例

假設(shè)有 User 實(shí)體類:

public class User {
    private Long id;
    private String name;
    private Integer age;
    private String email;
    private LocalDateTime createTime;
    // 省略 getter/setter
}

1. 等值查詢(eq)

lambdaQuery.eq(User::getName, "Alice"); // WHERE name = 'Alice'

2. 模糊查詢(like)

lambdaQuery.like(User::getEmail, "hotmail"); // WHERE email LIKE '%hotmail%'

3. 范圍查詢(between)

// 查詢年齡在 20~30 的用戶
lambdaQuery.between(User::getAge, 20, 30); // WHERE age BETWEEN 20 AND 30

4. 嵌套條件(and/or)

lambdaQuery
    .eq(User::getAge, 25)
    .and(q -> q
        .like(User::getName, "Tom")
        .or()
        .eq(User::getEmail, "tom@example.com")
    );
// WHERE age = 25 AND (name LIKE '%Tom%' OR email = 'tom@example.com')

5. 排序(orderBy)

lambdaQuery
    .orderByAsc(User::getAge)    // 年齡升序
    .orderByDesc(User::getId);   // ID降序
// ORDER BY age ASC, id DESC

6. 選擇字段(select)

lambdaQuery
    .select(User::getId, User::getName) // 只查詢 id 和 name 字段
    .like(User::getName, "A");
// SELECT id, name FROM user WHERE name LIKE '%A%'

7. 動(dòng)態(tài)條件(避免 if 判斷)

public List<User> queryUsers(String name, Integer minAge) {
    return new LambdaQueryWrapper<User>()
        .eq(StringUtils.isNotBlank(name), User::getName, name)
        .gt(minAge != null, User::getAge, minAge)
        .list();
}
// 當(dāng) name 非空時(shí)添加 name 條件,當(dāng) minAge 非空時(shí)添加 age 條件

完整示例場(chǎng)景

需求: 查詢郵箱包含 "google"、年齡 ≥ 25、按創(chuàng)建時(shí)間倒序的前 10 條用戶 Java 代碼:

List<User> users = new LambdaQueryWrapper<User>()
    .like(User::getEmail, "google")
    .ge(User::getAge, 25)         // ge = greater or equal (>=)
    .orderByDesc(User::getCreateTime)
    .last("LIMIT 10")             // 特殊 SQL 拼接
    .list();                      // 執(zhí)行查詢

注意事項(xiàng)

  1. LambdaQueryWrapper 需要 MyBatis-Plus 3.x+
  2. 實(shí)體類需有 Getter 方法(Lambda 基于方法引用)
  3. 復(fù)雜 SQL(如多表聯(lián)查)建議仍用 XML/注解方式
  4. 避免在循環(huán)中頻繁創(chuàng)建 LambdaQueryWrapper 對(duì)象

通過(guò) LambdaQuery 可以大幅減少 SQL 拼接的錯(cuò)誤率,讓查詢代碼更加簡(jiǎn)潔優(yōu)雅。它是現(xiàn)代 Java 后端開(kāi)發(fā)中處理單表查詢的首選方式。

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

相關(guān)文章

  • Java中最基本的存儲(chǔ)單元之變量基礎(chǔ)教程

    Java中最基本的存儲(chǔ)單元之變量基礎(chǔ)教程

    變量相當(dāng)于內(nèi)存中一個(gè)數(shù)據(jù)存儲(chǔ)空間的表示,類似與門牌號(hào)與房間的關(guān)系—變量看作門牌號(hào),通過(guò)門牌號(hào)可以找到房間,而通過(guò)變量名可以訪問(wèn)到變量,這篇文章主要介紹了Java中最基本的存儲(chǔ)單元之變量基礎(chǔ)教程的相關(guān)資料,需要的朋友可以參考下
    2025-12-12
  • 面試必問(wèn)項(xiàng)之Set實(shí)現(xiàn)類:TreeSet

    面試必問(wèn)項(xiàng)之Set實(shí)現(xiàn)類:TreeSet

    這篇文章主要介紹了Java TreeSet類的簡(jiǎn)單理解和使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2021-07-07
  • Springboot根據(jù)配置文件動(dòng)態(tài)注入接口實(shí)現(xiàn)類詳解

    Springboot根據(jù)配置文件動(dòng)態(tài)注入接口實(shí)現(xiàn)類詳解

    這篇文章主要介紹了Springboot根據(jù)配置文件動(dòng)態(tài)注入接口實(shí)現(xiàn)類詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,需要的朋友可以參考下,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-10-10
  • 如何使用IntelliJ IDEA中的Live Templates自定義代碼模板

    如何使用IntelliJ IDEA中的Live Templates自定義代碼模板

    在IntelliJ IDEA中,通過(guò)使用LiveTemplates功能,可以實(shí)現(xiàn)快速編碼和自定義代碼模板,例如,輸入“main”可以自動(dòng)補(bǔ)全主函數(shù)結(jié)構(gòu),“sout”可以補(bǔ)全輸出語(yǔ)句,用戶可以通過(guò)設(shè)置中的LiveTemplates選項(xiàng)查看和定義快捷模板,支持使用分組管理和參數(shù)化模板內(nèi)容,適應(yīng)復(fù)雜的編碼需求
    2024-11-11
  • spring簡(jiǎn)單MVC實(shí)現(xiàn)方法(URL映射及其參數(shù)使用、查詢(id、其他參數(shù))、增加)

    spring簡(jiǎn)單MVC實(shí)現(xiàn)方法(URL映射及其參數(shù)使用、查詢(id、其他參數(shù))、增加)

    這篇文章主要介紹了spring簡(jiǎn)單MVC實(shí)現(xiàn)方法(URL映射及其參數(shù)使用、查詢(id、其他參數(shù))、增加),方法參數(shù)使用包括在無(wú)注解下獲取參數(shù),使用@RequestParam 獲取參數(shù)的方法,每種方法講解的非常詳細(xì),需要的朋友可以參考下
    2024-01-01
  • springcloud如何使用dubbo開(kāi)發(fā)rpc服務(wù)及調(diào)用

    springcloud如何使用dubbo開(kāi)發(fā)rpc服務(wù)及調(diào)用

    這篇文章主要介紹了springcloud如何使用dubbo開(kāi)發(fā)rpc服務(wù)及調(diào)用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • java中常用的字符串的比較方法(兩種)

    java中常用的字符串的比較方法(兩種)

    本文主要介紹了java中兩種常用的字符串的比較方法。具有很好的參考價(jià)值。下面跟著小編一起來(lái)看下吧
    2017-03-03
  • Java 詳解如何獲取網(wǎng)絡(luò)接口信息

    Java 詳解如何獲取網(wǎng)絡(luò)接口信息

    讀萬(wàn)卷書不如行萬(wàn)里路,只學(xué)書上的理論是遠(yuǎn)遠(yuǎn)不夠的,只有在實(shí)踐中才能獲得能力的提升,本篇文章手把手帶你用Java獲取網(wǎng)絡(luò)接口的信息,大家可以在過(guò)程中查缺補(bǔ)漏,提升水平
    2021-11-11
  • 使用Java實(shí)現(xiàn)解析Excel公式

    使用Java實(shí)現(xiàn)解析Excel公式

    在日常工作中,我們經(jīng)常需要在Excel中使用公式對(duì)表中數(shù)據(jù)進(jìn)行計(jì)算和分析,所以本文小編主要來(lái)和大家介紹一下如何在Java中實(shí)現(xiàn)解析Excel公式,感興趣的可以了解下
    2024-02-02
  • Activiti流程引擎對(duì)象及配置原理解析

    Activiti流程引擎對(duì)象及配置原理解析

    這篇文章主要介紹了Activiti流程引擎對(duì)象及配置原理解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-03-03

最新評(píng)論

邹平县| 无极县| 崇礼县| 佛冈县| 牙克石市| 东乌| 车致| 华坪县| 南木林县| 平湖市| 佛学| 平利县| 浦县| 龙南县| 海晏县| 县级市| 定远县| 黄石市| 宁乡县| 白朗县| 徐闻县| 丰顺县| 策勒县| 荣成市| 平潭县| 绥化市| 六盘水市| 青田县| 扎鲁特旗| 晋中市| 云梦县| 温泉县| 建宁县| 汶川县| 大同市| 古丈县| 芷江| 岳西县| 广元市| 前郭尔| 扎赉特旗|