詳解MyBatis-Plus Wrapper條件構(gòu)造器查詢大全
一、引言
那么那么那么今天來說下MP中強(qiáng)大的條件查詢功能。
本章是基于上個案例來講的:MyBaits-Plus 快速入門案例
二、具體操作
首先來說說基本的查詢吧,根據(jù)主鍵或者簡單的查詢條件進(jìn)行查詢。
/**
* 通過單個ID主鍵進(jìn)行查詢
*/
@Test
public void selectById() {
User user = userMapper.selectById(1094592041087729666L);
System.out.println(user);
}
/**
* 通過多個ID主鍵查詢
*/
@Test
public void selectByList() {
List<Long> longs = Arrays.asList(1094592041087729666L, 1094590409767661570L);
List<User> users = userMapper.selectBatchIds(longs);
users.forEach(System.out::println);
}
/**
* 通過Map參數(shù)進(jìn)行查詢
*/
@Test
public void selectByMap() {
Map<String, Object> params = new HashMap<>();
params.put("name", "張雨琪");
List<User> users = userMapper.selectByMap(params);
users.forEach(System.out::println);
}
MyBatis-Plus還提供了Wrapper條件構(gòu)造器,具體使用看如下代碼:
/**
* 名字包含雨并且年齡小于40
* <p>
* WHERE name LIKE '%雨%' AND age < 40
*/
@Test
public void selectByWrapperOne() {
QueryWrapper<User> wrapper = new QueryWrapper();
wrapper.like("name", "雨").lt("age", 40);
List<User> users = userMapper.selectList(wrapper);
users.forEach(System.out::println);
}
/**
* 名字包含雨
* 年齡大于20小于40
* 郵箱不能為空
* <p>
* WHERE name LIKE '%雨%' AND age BETWEEN 20 AND 40 AND email IS NOT NULL
*/
@Test
public void selectByWrapperTwo() {
QueryWrapper<User> wrapper = Wrappers.query();
wrapper.like("name", "雨").between("age", 20, 40).isNotNull("email");
List<User> users = userMapper.selectList(wrapper);
users.forEach(System.out::println);
}
/**
* 名字為王性
* 或者年齡大于等于25
* 按照年齡降序排序,年齡相同按照id升序排序
* <p>
* WHERE name LIKE '王%' OR age >= 25 ORDER BY age DESC , id ASC
*/
@Test
public void selectByWrapperThree() {
QueryWrapper<User> wrapper = Wrappers.query();
wrapper.likeRight("name", "王").or()
.ge("age", 25).orderByDesc("age").orderByAsc("id");
List<User> users = userMapper.selectList(wrapper);
users.forEach(System.out::println);
}
/**
* 查詢創(chuàng)建時間為2019年2月14
* 并且上級領(lǐng)導(dǎo)姓王
* <p>
* WHERE date_format(create_time,'%Y-%m-%d') = '2019-02-14' AND manager_id IN (select id from user where name like '王%')
*/
@Test
public void selectByWrapperFour() {
QueryWrapper<User> wrapper = Wrappers.query();
wrapper.apply("date_format(create_time,'%Y-%m-%d') = {0}", "2019-02-14")
.inSql("manager_id", "select id from user where name like '王%'");
List<User> users = userMapper.selectList(wrapper);
users.forEach(System.out::println);
}
/**
* 查詢王姓
* 并且年齡小于40或者郵箱不為空
* <p>
* WHERE name LIKE '王%' AND ( age < 40 OR email IS NOT NULL )
*/
@Test
public void selectByWrapperFive() {
QueryWrapper<User> wrapper = Wrappers.query();
wrapper.likeRight("name", "王").and(qw -> qw.lt("age", 40).or().isNotNull("email"));
List<User> users = userMapper.selectList(wrapper);
users.forEach(System.out::println);
}
/**
* 查詢王姓
* 并且年齡大于20 、年齡小于40、郵箱不能為空
* <p>
* WHERE name LIKE ? OR ( age BETWEEN ? AND ? AND email IS NOT NULL )
*/
@Test
public void selectByWrapperSix() {
QueryWrapper<User> wrapper = Wrappers.query();
wrapper.likeRight("name", "王").or(
qw -> qw.between("age", 20, 40).isNotNull("email")
);
List<User> users = userMapper.selectList(wrapper);
users.forEach(System.out::println);
}
/**
* (年齡小于40或者郵箱不為空) 并且名字姓王
* WHERE ( age < 40 OR email IS NOT NULL ) AND name LIKE '王%'
*/
@Test
public void selectByWrapperSeven() {
QueryWrapper<User> wrapper = Wrappers.query();
wrapper.nested(qw -> qw.lt("age", 40).or().isNotNull("email"))
.likeRight("name", "王");
List<User> users = userMapper.selectList(wrapper);
users.forEach(System.out::println);
}
/**
* 查詢年齡為30、31、32
* WHERE age IN (?,?,?)
*/
@Test
public void selectByWrapperEight() {
QueryWrapper<User> wrapper = Wrappers.query();
wrapper.in("age", Arrays.asList(30, 31, 32));
List<User> users = userMapper.selectList(wrapper);
users.forEach(System.out::println);
}
/**
* 查詢一條數(shù)據(jù)
* limit 1
*/
@Test
public void selectByWrapperNine() {
QueryWrapper<User> wrapper = Wrappers.query();
wrapper.in("age", Arrays.asList(30, 31, 32)).last("limit 1");
List<User> users = userMapper.selectList(wrapper);
users.forEach(System.out::println);
}
到此這篇關(guān)于詳解MyBatis-Plus Wrapper條件構(gòu)造器查詢大全的文章就介紹到這了,更多相關(guān) MyBatis-Plus Wrapper條件構(gòu)造器內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- MybatisPlus使用Wrapper實現(xiàn)條件查詢功能
- mybatis-plus自帶QueryWrapper自定義sql實現(xiàn)復(fù)雜查詢實例詳解
- Mybatis-plus動態(tài)條件查詢QueryWrapper的使用案例
- MyBatisPlus-QueryWrapper多條件查詢及修改方式
- mybatisplus where QueryWrapper加括號嵌套查詢方式
- mybatisplus如何在xml的連表查詢中使用queryWrapper
- MybatisPlus使用queryWrapper如何實現(xiàn)復(fù)雜查詢
- MyBatis-Plus實現(xiàn)2種分頁方法(QueryWrapper查詢分頁和SQL查詢分頁)
- mybatis-plus QueryWrapper自定義查詢條件的實現(xiàn)
- Mybatis Plus Wrapper查詢某幾列的方法實現(xiàn)
相關(guān)文章
Spring Security Oauth2.0 實現(xiàn)短信驗證碼登錄示例
本篇文章主要介紹了Spring Security Oauth2.0 實現(xiàn)短信驗證碼登錄示例,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-01-01
Java實現(xiàn)解析ini文件對應(yīng)到JavaBean中
ini 文件是Initialization File的縮寫,即初始化文件,是windows的系統(tǒng)配置文件所采用的存儲格式。這篇文章主要介紹了通過Java實現(xiàn)解析ini文件對應(yīng)到JavaBean中,需要的可以參考一下2022-01-01
SpringMVC框架使用jackson封裝數(shù)據(jù)過程中遇到的問題及解決
這篇文章主要介紹了SpringMVC框架使用jackson封裝數(shù)據(jù)過程中遇到的問題及解決,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-07-07

