MyBatis-Plus QueryWrapper及LambdaQueryWrapper的使用詳解

假如我們有一張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();

到此這篇關於MyBatis-Plus QueryWrapper及LambdaQueryWrapper的使用詳解的文章就介紹到這瞭,更多相關MyBatis-Plus QueryWrapper及LambdaQueryWrapper 內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: