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

MyBatis-Plus 條件構(gòu)造器Wrapper使用示例詳解(最新整理)

 更新時間:2025年06月11日 11:19:23   作者:愿你天黑有燈下雨有傘  
條件構(gòu)造器是 MyBatis-Plus 框架中用于動態(tài)構(gòu)建 SQL 條件的核心工具類,通過鏈式編程方式實現(xiàn)復(fù)雜查詢條件的組合,本文給大家介紹MyBatis-Plus條件構(gòu)造器Wrapper使用示例,感興趣的朋友一起看看吧

一、條件構(gòu)造器概述

條件構(gòu)造器(Wrapper)是 MyBatis-Plus 框架中用于動態(tài)構(gòu)建 SQL 條件的核心工具類,通過鏈式編程方式實現(xiàn)復(fù)雜查詢條件的組合。其主要作用包括:

  • 替代傳統(tǒng) XML 中的動態(tài) SQL 標簽
  • 提供類型安全的條件構(gòu)建方式
  • 支持 Lambda 表達式語法
  • 實現(xiàn)復(fù)雜的 AND/OR 條件組合

注意:MyBatis-Plus 3.x+ 版本已棄用 EntityWrapper,推薦使用 QueryWrapperLambdaQueryWrapper。

二、核心 Wrapper 類型

類型說明版本要求
QueryWrapper<T>通用條件構(gòu)造器3.0+
UpdateWrapper<T>更新操作條件構(gòu)造器3.0+
LambdaQueryWrapper<T>Lambda 語法條件構(gòu)造器3.0.5+

三、基礎(chǔ)使用示例

  1. 簡單條件構(gòu)建

QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("age", 25)
       .like("name", "張")
       .between("create_time", startDate, endDate)
       .orderByDesc("id");
List<User> users = userMapper.selectList(wrapper);

2. Lambda 表達式構(gòu)建

LambdaQueryWrapper<User> lambdaWrapper = new LambdaQueryWrapper<>();
lambdaWrapper.eq(User::getAge, 25)
             .like(User::getName, "張")
             .between(User::getCreateTime, startDate, endDate)
             .orderByDesc(User::getId);
List<User> users = userMapper.selectList(lambdaWrapper);

3. 嵌套條件構(gòu)建

QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.and(w -> w.eq("age", 25).or().like("name", "張"))
       .between("create_time", startDate, endDate)
       .orderByDesc("id");
List<User> users = userMapper.selectList(wrapper);

4. 更新操作條件構(gòu)建

UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("id", 1)
             .set("name", "新名字")
             .set("age", 30);
int result = userMapper.update(null, updateWrapper);

四、常用方法說明

條件構(gòu)建方法

方法名說明示例
eq等于eq("age", 25)
ne不等于ne("age", 25)
gt大于gt("age", 25)
ge大于等于ge("age", 25)
lt小于lt("age", 25)
le小于等于le("age", 25)
like模糊查詢like("name", "張")
notLike非模糊查詢notLike("name", "張")
between范圍查詢between("age", 20, 30)
notBetween非范圍查詢notBetween("age", 20, 30)
inIN 查詢in("age", Arrays.asList(20, 25, 30))
notInNOT IN 查詢notIn("age", Arrays.asList(20, 25, 30))
isNullIS NULL 查詢isNull("age")
isNotNullIS NOT NULL 查詢isNotNull("age")

排序方法

方法名說明示例
orderByAsc升序排序orderByAsc("id")
orderByDesc降序排序orderByDesc("id")

嵌套條件方法

方法名說明示例
andAND 嵌套條件and(w -> w.eq("age", 25).or().like("name", "張"))
orOR 嵌套條件or(w -> w.eq("age", 25).or().like("name", "張"))

五、LambdaQueryWrapper 優(yōu)勢

LambdaQueryWrapper 使用 Lambda 表達式,具有以下優(yōu)勢:

  • 類型安全:避免字段名拼寫錯誤
  • 代碼可讀性高:直接使用實體類字段
  • IDE 自動補全:方便快速構(gòu)建條件

六、注意事項

  • 空值處理:條件構(gòu)造器會自動忽略 null
  • SQL 注入:避免直接拼接用戶輸入,使用參數(shù)綁定防止 SQL 注入
  • 性能優(yōu)化:復(fù)雜條件查詢時,合理使用索引

七、更多示例 QueryWrapper

示例 1. 簡單查詢

QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("age", 25)
       .like("name", "張")
       .between("create_time", startDate, endDate)
       .orderByDesc("id");
List<User> users = userMapper.selectList(wrapper);

2. 復(fù)雜查詢

QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.and(w -> w.eq("age", 25).or().like("name", "張"))
       .and(w -> w.between("create_time", startDate, endDate))
       .orderByDesc("id");
List<User> users = userMapper.selectList(wrapper);

3. 刪除操作

QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.isNull("email");
int result = userMapper.delete(wrapper);

4. 更新操作

QueryWrapper<User> wrapper = new QueryWrapper<>();
wrapper.eq("id", 1);
User user = new User();
user.setName("新名字");
user.setAge(30);
int result = userMapper.update(user, wrapper);

LambdaQueryWrapper

示例 1. 簡單查詢

LambdaQueryWrapper<User> lambdaWrapper = new LambdaQueryWrapper<>();
lambdaWrapper.eq(User::getAge, 25)
             .like(User::getName, "張")
             .between(User::getCreateTime, startDate, endDate)
             .orderByDesc(User::getId);
List<User> users = userMapper.selectList(lambdaWrapper);

2. 復(fù)雜查詢

LambdaQueryWrapper<User> lambdaWrapper = new LambdaQueryWrapper<>();
lambdaWrapper.and(w -> w.eq(User::getAge, 25).or().like(User::getName, "張"))
             .and(w -> w.between(User::getCreateTime, startDate, endDate))
             .orderByDesc(User::getId);
List<User> users = userMapper.selectList(lambdaWrapper);

UpdateWrapper 示例

1. 簡單更新

UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
updateWrapper.eq("id", 1)
             .set("name", "新名字")
             .set("age", 30);
int result = userMapper.update(null, updateWrapper);

2. 復(fù)雜更新

UpdateWrapper<User> updateWrapper = new UpdateWrapper<>();
updateWrapper.like("name", "a")
             .and(w -> w.gt("age", 20).or().isNull("email"))
             .set("name", "小黑")
             .set("email", "dhsjfghr");
int result = userMapper.update(null, updateWrapper);

到此這篇關(guān)于MyBatis-Plus 條件構(gòu)造器Wrapper使用指南的文章就介紹到這了,更多相關(guān)MyBatis-Plus 條件構(gòu)造器Wrapper內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MyBatis 擴展BaseTypeHandler 轉(zhuǎn)換泛型 JSON 列表的解決方法

    MyBatis 擴展BaseTypeHandler 轉(zhuǎn)換泛型 JSON 列表的解

    本文詳細介紹了MyBatis中處理JSON轉(zhuǎn)換的bug及其解決方法,文章還介紹了如何處理抽象類和自定義對象的JSON轉(zhuǎn)換,并提供了一個基類AbstractListTypeHandler作為示例,最后,文章附上了MyBatis內(nèi)建的javaTypeAlias鏈接,感興趣的朋友跟隨小編一起看看吧
    2025-12-12
  • Java中stream.map和stream.forEach的區(qū)別

    Java中stream.map和stream.forEach的區(qū)別

    本文主要介紹了Java中stream.map和stream.forEach的區(qū)別,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-08-08
  • Maven 命令行打包 和 pom.xml的常用配置詳解

    Maven 命令行打包 和 pom.xml的常用配置詳解

    這篇文章主要介紹了Maven 命令行打包 和 pom.xml的常用配置詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 詳解快速排序算法中的區(qū)間劃分法及Java實現(xiàn)示例

    詳解快速排序算法中的區(qū)間劃分法及Java實現(xiàn)示例

    這篇文章主要介紹了詳解快速排序算法中的區(qū)間劃分法及Java實現(xiàn)示例,文中分別介紹了快排時兩種區(qū)間劃分的思路,需要的朋友可以參考下
    2016-04-04
  • Java21增強對Emoji表情符號處理示例詳解

    Java21增強對Emoji表情符號處理示例詳解

    這篇文章主要為大家介紹了Java21增強對Emoji表情符號處理示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-11-11
  • Java程序順序結(jié)構(gòu)中邏輯控制語句詳解流程

    Java程序順序結(jié)構(gòu)中邏輯控制語句詳解流程

    在程序開發(fā)的過程之中一共會存在有三種程序邏輯:順序結(jié)構(gòu)、分支結(jié)構(gòu)、循環(huán)結(jié)構(gòu),對于之前所編寫的代碼大部分都是順序結(jié)構(gòu)的定義,即:所有的程序?qū)凑斩x的代碼順序依次執(zhí)行
    2021-10-10
  • Java正則替換手機號代碼實例

    Java正則替換手機號代碼實例

    本文的主要內(nèi)容是Java語言中正則表達式替換手機號的第4到第7位,實現(xiàn)方法十分簡單,同時涉及了一些正則表達式的相關(guān)用法,需要的朋友可以參考下。
    2017-09-09
  • SpringBoot使用Redis緩存MySql的方法步驟

    SpringBoot使用Redis緩存MySql的方法步驟

    本文主要介紹了SpringBoot使用Redis緩存MySql的方法步驟,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • 使用MybatisPlus實現(xiàn)sql日志打印優(yōu)化

    使用MybatisPlus實現(xiàn)sql日志打印優(yōu)化

    本文主要介紹了使用MybatisPlus實現(xiàn)sql日志打印優(yōu)化,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-08-08
  • Java使用EasyExcel導(dǎo)出Excel的全流程詳解

    Java使用EasyExcel導(dǎo)出Excel的全流程詳解

    在 Java 后端開發(fā)中,Excel 導(dǎo)出是非常常見的需求,涉及報表、數(shù)據(jù)分析或業(yè)務(wù)導(dǎo)出,本文將結(jié)合 阿里 EasyExcel 庫,詳細講解 Excel 導(dǎo)出流程,包括工具類設(shè)計、樣式、列寬策略、對象映射、輸出流處理,需要的朋友可以參考下
    2025-11-11

最新評論

潮州市| 勃利县| 阳信县| 贺州市| 丹阳市| 克什克腾旗| 中江县| 苗栗县| 池州市| 山阴县| 广西| 延寿县| 洞口县| 新兴县| 始兴县| 罗平县| 花莲县| 大兴区| 三亚市| 洛南县| 石河子市| 侯马市| 青河县| 微山县| 徐州市| 鄂伦春自治旗| 安庆市| 安康市| 井研县| 松溪县| 荔浦县| 松桃| 留坝县| 渭源县| 稻城县| 工布江达县| 基隆市| 涟源市| 邵阳县| 吉水县| 罗城|