中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

MyBatisPlus查詢投影與查詢條件怎么指定

發布時間:2022-08-26 15:16:09 來源:億速云 閱讀:201 作者:iii 欄目:開發技術

這篇“MyBatisPlus查詢投影與查詢條件怎么指定”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“MyBatisPlus查詢投影與查詢條件怎么指定”文章吧。

查詢投影

查詢指定字段

目前我們在查詢數據的時候,什么都沒有做默認就是查詢表中所有字段的內容,我們所說的查詢投影即不查詢所有字段,只查詢出指定內容的數據。

具體如何來實現?

@SpringBootTest
class Mybatisplus02DqlApplicationTests {
    @Autowired
    private UserDao userDao;
    @Test
    void testGetAll(){
        LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
        lqw.select(User::getId,User::getName,User::getAge);
        List<User> userList = userDao.selectList(lqw);
        System.out.println(userList);
    }
}

select(&hellip;)方法用來設置查詢的字段列,可以設置多個,最終的sql語句為:

SELECT id,name,age FROM user

如果使用的不是lambda,就需要手動指定字段

@SpringBootTest
class Mybatisplus02DqlApplicationTests {
    @Autowired
    private UserDao userDao;
    @Test
    void testGetAll(){
        QueryWrapper<User> lqw = new QueryWrapper<User>();
        lqw.select("id","name","age","tel");
        List<User> userList = userDao.selectList(lqw);
        System.out.println(userList);
    }
}

最終的sql語句為:SELECT id,name,age,tel FROM user

聚合查詢

需求:聚合函數查詢,完成count、max、min、avg、sum的使用

count:總記錄數

max:最大值

min:最小值

avg:平均值

sum:求和

@SpringBootTest
class Mybatisplus02DqlApplicationTests {
    @Autowired
    private UserDao userDao;
    @Test
    void testGetAll(){
        QueryWrapper<User> lqw = new QueryWrapper<User>();
        //lqw.select("count(*) as count");
        //SELECT count(*) as count FROM user
        //lqw.select("max(age) as maxAge");
        //SELECT max(age) as maxAge FROM user
        //lqw.select("min(age) as minAge");
        //SELECT min(age) as minAge FROM user
        //lqw.select("sum(age) as sumAge");
        //SELECT sum(age) as sumAge FROM user
        lqw.select("avg(age) as avgAge");
        //SELECT avg(age) as avgAge FROM user
        List<Map<String, Object>> userList = userDao.selectMaps(lqw);
        System.out.println(userList);
    }
}

為了在做結果封裝的時候能夠更簡單,我們將上面的聚合函數都起了個名稱,方面后期來獲取這些數據

分組查詢

需求:分組查詢,完成 group by的查詢使用

@SpringBootTest
class Mybatisplus02DqlApplicationTests {
    @Autowired
    private UserDao userDao;
    @Test
    void testGetAll(){
        QueryWrapper<User> lqw = new QueryWrapper<User>();
        lqw.select("count(*) as count,tel");
        lqw.groupBy("tel");
        List<Map<String, Object>> list = userDao.selectMaps(lqw);
        System.out.println(list);
    }
}

groupBy為分組,最終的sql語句為

SELECT count(*) as count,tel FROM user GROUP BY tel

注意:

  • 聚合與分組查詢,無法使用lambda表達式來完成

  • MP只是對MyBatis的增強,如果MP實現不了,我們可以直接在DAO接口中使用MyBatis的方式實現

查詢條件

前面我們只使用了lt()和gt(),除了這兩個方法外,MP還封裝了很多條件對應的方法,這一節我們重點把MP提供的查詢條件方法進行學習下。

MP的查詢條件有很多:

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

  • 模糊匹配(like)

  • 空判定(null)

  • 包含性匹配(in)

  • 分組(group)

  • 排序(order)

  • &hellip;&hellip;

等值查詢

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

@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:查詢結果為單個

范圍查詢

需求:對年齡進行范圍查詢,使用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 ?

模糊查詢

需求:查詢表中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%

排序查詢

需求:查詢所有數據,然后按照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
    }
}

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

MyBatisPlus查詢投影與查詢條件怎么指定

orderBy排序

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

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

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

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

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

orderByAsc/Desc

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

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

MyBatisPlus查詢投影與查詢條件怎么指定

以上就是關于“MyBatisPlus查詢投影與查詢條件怎么指定”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

台州市| 神木县| 扬州市| 遂宁市| 大姚县| 闻喜县| 越西县| 潜江市| 东至县| 潞城市| 虞城县| 板桥市| 桦川县| 商水县| 商南县| 五寨县| 赤峰市| 乐清市| 马鞍山市| 蒙阴县| 周口市| 邹城市| 林周县| 成武县| 浦北县| 红安县| 宁晋县| 柞水县| 乐平市| 西藏| 桂平市| 祁门县| 仁怀市| 明溪县| 南溪县| 榆树市| 全州县| 财经| 泉州市| 禹州市| 勐海县|