Java開發學習(四十四)----MyBatisPlus查詢語句之查詢條件

1、查詢條件

前面我們只使用了lt()和gt(),除了這兩個方法外,MybatisPlus還封裝了很多條件對應的方法。

MybatisPlus的查詢條件有很多:

  • 範圍匹配(> 、 = 、between)

  • 模糊匹配(like)

  • 空判定(null)

  • 包含性匹配(in)

  • 分組(group)

  • 排序(order)

  • ……

1.1 等值查詢

需求:根據用戶名和密碼查詢用戶信息

@SpringBootTest
class Mybatisplus02DqlApplicationTests {
​
    @Autowired
    private UserDao userDao;
    
    @Test
    void testGetAll(){
        LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
        lqw.eq(User::getName, "Jerry").eq(User::getPassword, "jerry");
        User loginUser = userDao.selectOne(lqw);
        System.out.println(loginUser);
    }
}
  • eq(): 相當於 =,對應的sql語句爲

    SELECT id,name,password,age,tel FROM user WHERE (name = ? AND password = ?)
  • selectList:查詢結果爲多個或者單個

  • selectOne:查詢結果爲單個

1.2 範圍查詢

需求:對年齡進行範圍查詢,使用lt()、le()、gt()、ge()、between()進行範圍查詢

@SpringBootTest
class Mybatisplus02DqlApplicationTests {
​
    @Autowired
    private UserDao userDao;
    
    @Test
    void testGetAll(){
        LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
        lqw.between(User::getAge, 10, 30);
        //SELECT id,name,password,age,tel FROM user WHERE (age BETWEEN ? AND ?)
        List<User> userList = userDao.selectList(lqw);
        System.out.println(userList);
    }
}
  • gt():大於(>)

  • ge():大於等於(>=)

  • lt():小於(<)

  • lte():小於等於(<=)

  • between():between ? and ?

1.3 模糊查詢

需求:查詢表中name屬性的值以J開頭的用戶信息,使用like進行模糊查詢

@SpringBootTest
class Mybatisplus02DqlApplicationTests {
​
    @Autowired
    private UserDao userDao;
    
    @Test
    void testGetAll(){
        LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
        lqw.likeLeft(User::getName, "J");
        //SELECT id,name,password,age,tel FROM user WHERE (name LIKE ?)
        List<User> userList = userDao.selectList(lqw);
        System.out.println(userList);
    }
}
  • like():前後加百分號,如 %J%

  • likeLeft():前面加百分號,如 %J

  • likeRight():後面加百分號,如 J%

1.4 排序查詢

需求:查詢所有數據,然後按照id降序

@SpringBootTest
class Mybatisplus02DqlApplicationTests {
​
    @Autowired
    private UserDao userDao;
    
    @Test
    void testGetAll(){
        LambdaQueryWrapper<User> lwq = new LambdaQueryWrapper<>();
        /**
         * condition :條件,返回boolean,
                當condition爲true,進行排序,如果爲false,則不排序
         * isAsc:是否爲升序,true爲升序,false爲降序
         * columns:需要操作的列
         */
        lwq.orderBy(true,false, User::getId);
​
        userDao.selectList(lw
    }
}

除了上面演示的這種實現方式,還有很多其他的排序方法可以被調用,如圖:

  • orderBy排序

    • condition:條件,true則添加排序,false則不添加排序

    • isAsc:是否爲升序,true升序,false降序

    • columns:排序字段,可以有多個

  • orderByAsc/Desc(單個column):按照指定字段進行升序/降序

  • orderByAsc/Desc(多個column):按照多個字段進行升序/降序

  • orderByAsc/Desc

    • condition:條件,true添加排序,false不添加排序

    • 多個columns:按照多個字段進行排序

除了上面介紹的這幾種查詢條件構建方法以外還會有很多其他的方法,比如isNull,isNotNull,in,notIn等等方法可供選擇,具體參考官方文檔的條件構造器來學習使用.

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章