一、Mybatisplus多條件查詢and
Mybatisplus是一款優秀的ORM框架,能夠極大的提高開發效率,其中多條件查詢是非常常見的需求。而and運算符(使用and關鍵字)是最常見的多條件查詢方式之一。以下是一個示例代碼:
/** * 多條件查詢示例 */ public List queryUsers(String name, Integer age, String email) { QueryWrapper queryWrapper = new QueryWrapper(); if (StringUtils.isNotBlank(name)) { queryWrapper.lambda().eq(User::getName, name); } if (age != null) { queryWrapper.lambda().eq(User::getAge, age); } if (StringUtils.isNotBlank(email)) { queryWrapper.lambda().eq(User::getEmail, email); } return userDao.selectList(queryWrapper); }
在上面的示例中,我們利用了QueryWrapper來實現多條件查詢,關鍵代碼就是構建QueryWrapper。首先我們創建了一個空的QueryWrapper,隨後再判斷是否傳入了對應的參數,如果有則加入相關的查詢條件。
二、Mybatisplus查詢方法
除了使用and關鍵字以外,Mybatisplus還提供了諸如or,eq,ne,gt,lt等各種查詢方法。以下是一些常見的查詢方法:
- eq : 等於
- ne : 不等於
- gt : 大於
- ge : 大於等於
- lt : 小於
- le : 小於等於
- like : 模糊匹配
- in : 包含
- not in : 不包含
示例代碼:
queryWrapper.lambda().eq(User::getName, "張三"); queryWrapper.lambda().ne(User::getGender, "男"); queryWrapper.lambda().gt(User::getAge, 18); queryWrapper.lambda().ge(User::getSalary, 10000); queryWrapper.lambda().lt(User::getAge, 30); queryWrapper.lambda().le(User::getSalary, 20000); queryWrapper.lambda().like(User::getName, "張%"); //查詢名字以“張”開頭的用戶 queryWrapper.lambda().in(User::getId, 1, 2, 3); queryWrapper.lambda().notIn(User::getId, 1, 2, 3);
三、Mybatisplus查詢
除了利用QueryWrapper進行多條件查詢以外,Mybatisplus還提供了一些其他的查詢方法,例如:selectByMap,selectById等等。以下是一些常見的查詢方法:
- selectById : 根據id查詢記錄
- selectBatchIds : 根據id批量查詢記錄
- selectByMap : 根據Map條件查詢記錄
- selectOne : 根據條件查詢唯一一條記錄
- selectList : 根據條件查詢多條記錄
- selectMaps : 根據條件查詢多條記錄,以Map形式返回
- selectObjs : 根據條件查詢單個屬性,例如selectObjs(“select name,age from user where id=1”)
示例代碼:
//根據id查詢記錄 User user = userDao.selectById(1); //根據id批量查詢記錄 List userList = userDao.selectBatchIds(Arrays.asList(1, 2, 3)); //根據Map條件查詢記錄 Map columnMap = new HashMap(); columnMap.put("name", "張三"); columnMap.put("age", 18); List userList = userDao.selectByMap(columnMap); //根據條件查詢唯一一條記錄 QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.lambda().eq(User::getAge, 18); User user = userDao.selectOne(queryWrapper); //根據條件查詢多條記錄 QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.lambda().eq(User::getGender, "男"); List userList = userDao.selectList(queryWrapper); //根據條件查詢多條記錄,以Map形式返回 QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.lambda().ge(User::getAge, 18); List<Map> mapList = userDao.selectMaps(queryWrapper); //根據條件查詢單個屬性,例如查詢姓名 List
四、Mybatisplus條件查詢分頁
很多時候,我們需要進行條件查詢並且分頁展示結果。Mybatisplus提供了一個非常方便的分頁查詢工具類Page以及對應的方法selectPage。
示例代碼:
Pagination pagination = new Pagination(); pagination.setPageNum(1); //當前第一頁 pagination.setPageSize(10); //一頁10條記錄 QueryWrapper queryWrapper = new QueryWrapper(); queryWrapper.lambda().eq(User::getGender, "男"); Page userPage = new Page(pagination.getPageNum(), pagination.getPageSize()); userPage = userDao.selectPage(userPage, queryWrapper); List userList = userPage.getRecords(); //當前頁的記錄列表 long total = userPage.getTotal(); //總記錄數 int pages = userPage.getPages(); //總共多少頁
五、總結
Mybatisplus提供了非常便捷的多條件查詢工具,幫助我們快速地實現各種複雜的查詢操作。掌握Mybatisplus的多條件查詢功能將為我們的開發工作帶來極大的便利。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/243724.html