­

Mybatis-Plus高級之LambdaQueryWrapper,Wrappers.<實體類>lambdaQuery的使用

一、前言

小編今天又來分享乾貨了,絕對的乾淨又衛生,大夥請放心食用哈!Mybatis-Plus我們經常使用,但是裡面的很多功能,小編開始只是知道一點點,做個增刪改查沒問題。小編在新項目中發現,大神們不使用QueryWrapper,而是使用LambdaQueryWrapper,於是小編研究了一下,發現真香啊!!趕緊馬不停蹄的寫下這篇文章,大家一起進步哈!

二、LambdaQueryWrapper和QueryWrapper優缺點

我們在使用前要思考一下,這個東西和QueryWrapper有啥區別,為啥要用LambdaQueryWrapper呢?

別急,小編來告訴一下,lambda是JDK8的新特性,大家都知道很好用!Mybatis-Plus也想到了,於是LambdaQueryWrapper出來了!

LambdaQueryWrapper優點:以前的QueryWrapper比如一個eq("資料庫欄位名字","值"),我們在表欄位設計時,很多都是_拼接的,很容易把資料庫欄位名輸入錯誤!所以我們使用LambdaQueryWrapper,不需要輸入資料庫欄位名字,輸入實體類的對應駝峰命名即可!!

我們開始進入例子演示哈!!

三、引入Maven

<dependency>
    <groupId>com.baomidou</groupId>
    <artifactId>mybatis-plus-boot-starter</artifactId>
    <version>3.5.1</version>
</dependency>

四、LambdaQueryWrapper三種寫法

為了測試方便,小編直接在controller測試!

@RestController
@RequestMapping("/test")
@Slf4j
@RequiredArgsConstructor
public class TestController {

    private final TestService testService;
    @NonNull
    private TestMapper testMapper;

    @GetMapping("/testLambda")
    public Result testLambda(){

        LambdaQueryWrapper<Test> query = new LambdaQueryWrapper<>();
        query.select(Test::getName).eq(Test::getId,14);
        List<Test> tests1 = testMapper.selectList(query);

        List<Test> tests2 = testMapper.selectList(Wrappers.<Test>lambdaQuery().eq(Test::getId,14));
        List<Test> tests3 = testMapper.selectList(Wrappers.<Test>query().lambda().eq(Test::getId,16));

        System.out.println(tests1);
        System.out.println(tests2);
        System.out.println(tests3);
        return Result.success("成功");
    }
}

如果對@RequiredArgsConstructor不了解的可以看一下小編的這篇文章!@RequiredArgsConstructor代替@Autowrired

五、測試SQL執行展示

我們看到sql都是一樣的,所以喜歡那種按自己的習慣吧!
在這裡插入圖片描述

六、LambdaQueryWrapper構造器查詢

/**
  *附加條件構造器LambdaQueryWrapper常用方法 ---這幾個肯定夠用了
  */
 wrapper.eq("實體類::查詢欄位", "條件值"); //相當於where條件
 wrapper.between("實體類::查詢欄位", "區間一", "區間二");//相當於範圍內使用的between
 wrapper.like("實體類::查詢欄位", "模糊查詢的字元"); //模糊查詢like
 wrapper.groupBy("實體類::查詢欄位");  //相當於group by分組
 wrapper.in("實體類::查詢欄位", "包括的值,分割"); //相當於in
 wrapper.orderByAsc("實體類::查詢欄位"); //升序
 wrapper.orderByDesc("實體類::查詢欄位");//降序
 wrapper.ge("實體類::查詢欄位", "要比較的值"); //大於等於
 wrapper.le("實體類::查詢欄位", "要比較的值"); //小於等於

七、總結

鐺鐺鐺!!測試終於結束,恭喜大家學到新東西,本來會的就趕緊關掉頁面!小編灰溜溜的跑路了!總之分享小知識給大家還是挺開心的!!如果感覺有用,不妨點個關注,我們來日方長哈!!


有緣人才可以看得到的哦!!!

點擊訪問!小編自己的網站,裡面也是有很多好的文章哦!