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

MyBatis-Plus中的LambdaQuery用法實例詳解

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

核心概括:LambdaQueryWrapper 本質(zhì)上是一個條件包裝器(與wrapper類似),而 Mapper 方法(如 selectList)負責補充完整的 SQL 結構

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

核心優(yōu)勢

  1. 類型安全:編譯器檢查字段引用,避免拼寫錯誤
  2. 代碼可讀性:鏈式調(diào)用,語義清晰
  3. 重構友好:字段名修改后 IDE 自動更新 Lambda 引用

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

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

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

2. 鏈式構建查詢條件

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);
}

常用方法詳解 & 示例

假設有 User 實體類:

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. 動態(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();
}
// 當 name 非空時添加 name 條件,當 minAge 非空時添加 age 條件

完整示例場景

需求: 查詢郵箱包含 "google"、年齡 ≥ 25、按創(chuàng)建時間倒序的前 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í)行查詢

注意事項

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

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

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

相關文章

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

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

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

    面試必問項之Set實現(xiàn)類:TreeSet

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Activiti流程引擎對象及配置原理解析

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

最新評論

花垣县| 内乡县| 大新县| 康乐县| 和平县| 册亨县| 本溪市| 万年县| 宜州市| 水城县| 偏关县| 通辽市| 桐庐县| 孝感市| 韶关市| 桐乡市| 太仆寺旗| 衡东县| 方城县| 安顺市| 固始县| 连江县| 乌鲁木齐县| 海城市| 金阳县| 合川市| 喀喇沁旗| 普兰店市| 靖远县| 沈丘县| 松潘县| 铜山县| 平昌县| 柳河县| 华阴市| 北安市| 三门县| 尉氏县| 广饶县| 莒南县| 封开县|