Mybatis-Plus 實戰完整學習筆記(九)------條件構造器核心用法大全(上)


一、Mybatisplus通用(公共方法)CRUD,一共17種(3.0.3版),2.3系列也是這么多,這個新版本一定程度進行了改造和刪減。

 

二、構造器UML圖(3.0.3)-----實體包裝器,主要用於處理 sql 拼接,排序,實體參數查詢等 

  1. 注意: 使用的是數據庫字段,不是 Java 屬性! 

 

總體就是入上圖的樣式的結構,主要使用QueryWrapper 和UpdateWrapper,JDK1.8使用LambdaQueryWrapper和LambdaUpdateWrapper

 

注意2.3版本使用的是EntityWrapper實現條件構造器,這里將闡述和說明 

 

構造器拼接的方法

 

實戰演練:(3.0.3版)

 1、全部查詢,拼接一個where過濾條件

 1 @Test
 2     public void selectWrapper() throws SQLException {
 3 
 4 
 5         // 條件構造器使用
 6 
 7         // 1、全部查詢,拼接一個where過濾條件,如果是多個可以map中put多個,多個字段如果有某個字段是空的,就會默認添加空查詢條件
 8         // SELECT id,last_name,email,gender,age FROM tbl_employee WHERE gender = ? AND age IS NULL
 9         Employee employee = new Employee();
10         employee.setGender(1);
11 
12         Map<String,Object> map = new HashMap<>(16);
13         map.put("gender",employee.getGender());
14         map.put("age",employee.getAge());
15 
16        List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().allEq(map));
17 
18 
19         if (!employeeList.isEmpty()) {
20             logger.info("++條件構造器查詢員工信息+++++" + gson.toJson(employeeList));
21         }
22 }
View Code

注意2.3版本的可以用EntityWrapper代替QureyWrapper,其他寫法一樣

2、map添加的字段是否加到where的條件中

 1 @Test
 2     public void selectWrapper() throws SQLException {
 3 
 4 
 5         // 條件構造器使用
 6         Map<String,Object> map = new HashMap<>(16);
 7         map.put("gender",employee.getGender());
 8         map.put("age",employee.getAge());
 9 
10         // 2、map添加的字段是否加到where的條件中,通過lambda表達式判斷,如果是true就加入,反之,不加入,因為Map的key的String有gender,所以會過濾
11         List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().allEq((String,Object)->String.equals("gender"),map));
12 
13 
14         if (!employeeList.isEmpty()) {
15             logger.info("++條件構造器查詢員工信息+++++" + gson.toJson(employeeList));
16         }
17 }
View Code

3、and使用

 1 @Test
 2     public void selectWrapper() throws SQLException {
 3 
 4         // 條件構造器使用
 5         // 3、and使用
 6 
 7         List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().and(i -> i.eq("last_name", "Betty0")));
 8 
 9         if (!employeeList.isEmpty()) {
10             logger.info("++條件構造器查詢員工信息+++++" + gson.toJson(employeeList));
11         }
View Code

相當於SQL語句SELECT id,last_name,email,gender,age FROM tbl_employee WHERE ( last_name = ? ) 

 and前會有一個condition,判別是否加入到sql語句中的條件,默認是true
List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().and(true,i -> i.eq("last_name", "Betty0")));

 4、apply拼接條件使用

1     4、apply使用
2         List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().apply("last_name='Betty0'"));
3 
4 
5         if (!employeeList.isEmpty()) {
6             logger.info("++條件構造器查詢員工信息+++++" + gson.toJson(employeeList));
7         }
View Code

外部參數調用的話List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().apply("last_name={0}","Betty0"));

5、between使用方法

1       5、between
2         List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().between("age",20,50));
3 
4         if (!employeeList.isEmpty()) {
5             logger.info("++條件構造器查詢員工信息+++++" + gson.toJson(employeeList));
6         }
View Code

6、eq 等於 =

1    6、eq 充當and使用
2         List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().eq("last_name","Betty0"));
3 
4         if (!employeeList.isEmpty()) {
5             logger.info("++條件構造器查詢員工信息+++++" + gson.toJson(employeeList));
6         }
View Code

7、ge大於等於 >=

1     7、ge大於等於
2 
3         List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().ge("age","40"));
4 
5 
6         if (!employeeList.isEmpty()) {
7             logger.info("++條件構造器查詢員工信息+++++" + gson.toJson(employeeList));
8         }
View Code

8、gt大於

1   // 8 、gt 大於
2         List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().gt("age","40"));
3 
4         if (!employeeList.isEmpty()) {
5             logger.info("++條件構造器查詢員工信息+++++" + gson.toJson(employeeList));
6         }
View Code

9、分組操作

1 //        9、分組操作
2         List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().eq("id","25").groupBy("age","gender"));
3 
4         if (!employeeList.isEmpty()) {
5             logger.info("++條件構造器查詢員工信息+++++" + gson.toJson(employeeList));
6         }
View Code

10、having使用

1   10、having使用
2         List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().eq("gender","1").having("age = {0}",30));
3 
4         if (!employeeList.isEmpty()) {
5             logger.info("++條件構造器查詢員工信息+++++" + gson.toJson(employeeList));
6         }
View Code

11、in使用

1 //        11、in 操作
2         List<Integer> idList = new ArrayList<>();
3         idList.add(31);
4         idList.add(32);
5 
6         List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().in(true,"id",idList));
7         if (!employeeList.isEmpty()) {
8             logger.info("++條件構造器查詢員工信息+++++" + gson.toJson(employeeList));
9         }
View Code

12、inSql使用

1    12、inSql使用
2         List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().inSql("id", "12,22,23,24,25,26"));
3         if (!employeeList.isEmpty()) {
4             logger.info("++條件構造器查詢員工信息+++++" + gson.toJson(employeeList));
5         }
View Code

13、isNotNull字段值非空

1   13、字段值非空
2         List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().isNotNull("age"));
3 
4         if (!employeeList.isEmpty()) {
5             logger.info("++條件構造器查詢員工信息+++++" + gson.toJson(employeeList));
6         }
View Code

14、字段值為空的

1  14、字段值為空的
2         List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().isNull("age"));
3 
4         if (!employeeList.isEmpty()) {
5             logger.info("++條件構造器查詢員工信息+++++" + gson.toJson(employeeList));
6         }
View Code

15、結尾拼接sql語句,存在Sql注入風險,不建議使用

1     15、結尾拼接sql語句
2         List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().last("and age >30"));
3 
4 
5         if (!employeeList.isEmpty()) {
6             logger.info("++條件構造器查詢員工信息+++++" + gson.toJson(employeeList));
7         }
View Code

16、小於等於 <=

1  16、小於等於 <=
2         List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().le("age", "20"));
3 
4         if (!employeeList.isEmpty()) {
5             logger.info("++條件構造器查詢員工信息+++++" + gson.toJson(employeeList));
6         }
View Code

17、小於

1     17、小於
2         List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().lt("age", "20"));
3 
4 
5         if (!employeeList.isEmpty()) {
6             logger.info("++條件構造器查詢員工信息+++++" + gson.toJson(employeeList));
7         }
View Code

18、模糊查詢

1   18、模糊查詢
2         List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().like("age", "20"));
3 
4 
5         if (!employeeList.isEmpty()) {
6             logger.info("++條件構造器查詢員工信息+++++" + gson.toJson(employeeList));
7         }
View Code

19、LikeLeft以什么結尾的查詢

1      19、 LikeLeft以什么結尾的查詢
2         List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().likeLeft("age", "20"));
3 
4 
5         if (!employeeList.isEmpty()) {
6             logger.info("++條件構造器查詢員工信息+++++" + gson.toJson(employeeList));
7         }
View Code

20、likeRight以什么開頭

1   20、likeRight以什么開頭
2 //        List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().likeRight("age", "20"));
3 
4         if (!employeeList.isEmpty()) {
5             logger.info("++條件構造器查詢員工信息+++++" + gson.toJson(employeeList));
6         }
View Code

21、ne不等於 <>用法

1    21、ne不等於 <>用法
2          List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().ne("age", "20"));
3 
4 
5         if (!employeeList.isEmpty()) {
6             logger.info("++條件構造器查詢員工信息+++++" + gson.toJson(employeeList));
7         }
View Code

22、嵌套的查詢

1 22、嵌套的查詢
2         List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().nested(true,i -> i.eq("last_name", "Betty0")));
3 
4 
5 
6         if (!employeeList.isEmpty()) {
7             logger.info("++條件構造器查詢員工信息+++++" + gson.toJson(employeeList));
8         }
View Code

23、不在什么區間

1 List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().notBetween("age",20,50));
2 
3         if (!employeeList.isEmpty()) {
4             logger.info("++條件構造器查詢員工信息+++++" + gson.toJson(employeeList));
5         }
View Code

24、不存在notexist

1   24、不存在
2       List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().notExists("select id from tbl_employee where age = 1"));
3 
4         if (!employeeList.isEmpty()) {
5             logger.info("++條件構造器查詢員工信息+++++" + gson.toJson(employeeList));
6         }
View Code

25、存在exist

1 25、存在
2         List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().exists("select id from tbl_employee where age = 12"));
3 
4 
5         if (!employeeList.isEmpty()) {
6             logger.info("++條件構造器查詢員工信息+++++" + gson.toJson(employeeList));
7         }
View Code

26、not in 不在區間內

1 List<Integer> idList = new ArrayList<>();
2         idList.add(31);
3         idList.add(32);
4         List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().notIn("id",idList));
5 
6         if (!employeeList.isEmpty()) {
7             logger.info("++條件構造器查詢員工信息+++++" + gson.toJson(employeeList));
8         }
View Code

27、notSQL 不在區間內

1  List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().notInSql("id","12,22"));
2 
3 
4         if (!employeeList.isEmpty()) {
5             logger.info("++條件構造器查詢員工信息+++++" + gson.toJson(employeeList));
6         }
View Code

28、notLike 模糊查詢沒有這個關鍵字

1 List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().notLike("age", "2"));
2 
3         if (!employeeList.isEmpty()) {
4             logger.info("++條件構造器查詢員工信息+++++" + gson.toJson(employeeList));
5         }
View Code

29、orderBy根據字段升序還是降序排序

1 29、orderBy根據字段升序還是降序排序
2         List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().orderBy(true, false, "age"));
3 
4 
5         if (!employeeList.isEmpty()) {
6             logger.info("++條件構造器查詢員工信息+++++" + gson.toJson(employeeList));
7         }
View Code

30、or或者

1  30、or或者
2         List<Employee> employeeList = employeeMapper.selectList(new QueryWrapper<Employee>().eq("id","25").or().eq("gender","1"));
3 
4         if (!employeeList.isEmpty()) {
5             logger.info("++條件構造器查詢員工信息+++++" + gson.toJson(employeeList));
6         }
View Code


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM