MyBatis-Plus QueryWrapper及LambdaQueryWrapper的使用


轉載自

MyBatis-Plus QueryWrapper及LambdaQueryWrapper的使用

LambdaQueryWrapper

 

https://blog.csdn.net/lt326030434/article/details/106571670

LambdaQueryWrapper條件構造器方法對應Sql

setSqlSelect SELECT 查詢字段 舉例
where WHERE 語句,拼接 + WHERE 條件  
and AND 語句,拼接 + AND 字段=值  
andNew AND 語句,拼接 + AND (字段=值)  
or OR 語句,拼接 + OR 字段=值 .eq(" name “,” 木 子 “). or ( ). eq (” id ", 1 ) => name=“木子” or id=1 注意事項:主動調用or表示下一個方法不是and連接,不調用默認為使用and連接
orNew OR 語句,拼接 + OR (字段=值)  
eq 等於= .eq(“name”,“木子”) => name=“木子”
allEq 基於 map 內容等於=  
ne 不等於<>  
gt 大於>  
ge 大於等於>=  
lt 小於<  
le 小於等於<=  
like 模糊查詢 LIKE .like(“name”,“木子”) => name like ‘%木子%’
notLike NOT LIKE模糊查詢  
in IN 查詢 .in(“age”,{1,2,3}) => age in (1,2,3)
notIn NOT IN 查詢  
isNull NULL 值查詢  
isNotNull IS NOT NULL  
groupBy 分組 GROUP BY  
having HAVING 關鍵詞  
orderBy 排序 ORDER BY  
orderAsc Asc 排序 ORDER BY  
orderDesc DESC 排序 ORDER BY  
exists EXISTS 條件語句  
notExists NOT EXISTS 條件語句  
between BETWEEN 條件語句 .between (“age”,1,2) => age between 1 and 2
notBetween NOT BETWEEN 條件語句  
addFilter 自由拼接 SQL  
last 拼接在最后,例如:last(“LIMIT 1”)  

 

 

 

 

假如我們有一張banner_item表,現需要通過banner_id查出所有數據(查詢List)
在這里插入圖片描述

@Data
public class BannerItem {

    private Long id;

    private String name;

    private String img;

    private String keyword;

    private Integer type;

    private Long bannerId;
}
  • QueryWrapper

最基礎的使用方式是這樣

// 查詢條件構造器
QueryWrapper<BannerItem> wrapper = new QueryWrapper<>();
wrapper.eq("banner_id", id);
// 查詢操作
List<BannerItem> bannerItems = bannerItemMapper.selectList(wrapper);
 

 

然后我們可以引入lambda,避免我們在代碼中寫類似的於banner_id的硬編碼

QueryWrapper<BannerItem> wrapper = new QueryWrapper<>();
wrapper.lambda().eq(BannerItem::getBannerId, id);
List<BannerItem> bannerItems = bannerItemMapper.selectList(wrapper);
  • LambdaQueryWrapper

為了簡化lambda的使用,我們可以改寫成LambdaQueryWrapper構造器,語法如下:

LambdaQueryWrapper<BannerItem> wrapper = new QueryWrapper<BannerItem>().lambda();
wrapper.eq(BannerItem::getBannerId, id);
List<BannerItem> bannerItems = bannerItemMapper.selectList(wrapper);
 

 

我們可以再次將QueryWrapper<BannerItem>.lambda()簡化,變成這個樣子

LambdaQueryWrapper<BannerItem> wrapper = new LambdaQueryWrapper<>();
wrapper.eq(BannerItem::getBannerId, id);
List<BannerItem> bannerItems = bannerItemMapper.selectList(wrapper);
 
  • 鏈式查詢

MyBatis-Plus還提供了一種鏈式查詢的方式,和上面的代碼效果一樣。
但是這種寫法偏向於炫技,可讀性沒有上面的代碼強,大家可以根據需要自行選擇方式。

List<BannerItem> bannerItems = new LambdaQueryChainWrapper<>(bannerItemMapper)
                        .eq(BannerItem::getBannerId, id)
                        .list();
 

如果只想查詢一條記錄,例如通過id查詢某條記錄的詳情,使用.one()即可,例如

BannerItem bannerItem = new LambdaQueryChainWrapper<>(bannerItemMapper)
                        .eq(BannerItem::getId, id)
                        .one();
 

 

 

一個使用較多的項目模板 https://gitee.com/xqnode/x-admin

 

 

MyBatis-Plus QueryWrapper及LambdaQueryWrapper的使用


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM