轉:

碼農必備linux技能
本專欄主要從系統安裝、入門命令講解,會不定期更新公司服務架構安裝使用教程(如:Es、MQ、jenkins等等)。還不會linux? 趕緊跟我一起學習吧!

¥29.90
一、引言
那么那么那么今天來說下MP中強大的條件查詢功能。
本章是基於上個案例來講的:MyBaits-Plus 快速入門案例
二、具體操作
首先來說說基本的查詢吧,根據主鍵或者簡單的查詢條件進行查詢。
-
/**
-
* 通過單個ID主鍵進行查詢
-
*/
-
-
public void selectById() {
-
User user = userMapper.selectById( 1094592041087729666L);
-
System.out.println(user);
-
}
-
-
/**
-
* 通過多個ID主鍵查詢
-
*/
-
-
public void selectByList() {
-
List<Long> longs = Arrays.asList( 1094592041087729666L, 1094590409767661570L);
-
List<User> users = userMapper.selectBatchIds(longs);
-
users.forEach(System.out::println);
-
}
-
-
/**
-
* 通過Map參數進行查詢
-
*/
-
-
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條件構造器,具體使用看如下代碼:
-
/**
-
* 名字包含雨並且年齡小於40
-
* <p>
-
* WHERE name LIKE '%雨%' AND age < 40
-
*/
-
-
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
-
*/
-
-
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
-
*/
-
-
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);
-
}
-
-
/**
-
* 查詢創建時間為2019年2月14
-
* 並且上級領導姓王
-
* <p>
-
* WHERE date_format(create_time,'%Y-%m-%d') = '2019-02-14' AND manager_id IN (select id from user where name like '王%')
-
*/
-
-
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 )
-
*/
-
-
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 )
-
*/
-
-
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 '王%'
-
*/
-
-
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 (?,?,?)
-
*/
-
-
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);
-
}
-
-
/**
-
* 查詢一條數據
-
* limit 1
-
*/
-
-
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);
-
}