每天玩转3分钟 MyBatis-Plus - 1. 配置环境
每天玩转3分钟 MyBatis-Plus - 2. 普通查询
每天玩转3分钟 MyBatis-Plus - 3. 高级查询(一)
每天玩转3分钟 MyBatis-Plus - 4. 高级查询(二)
每天玩转3分钟 MyBatis-Plus - 5. 高级查询(三)
代码下载:https://github.com/Jackson0714/study-mybatis-plus.git
mybatis-plus的查询功能非常强大, 上一篇,我们通过例题的方式讲解了mybatis-plus的高级查询功能:条件查询,这一篇我们继续以例题的方式讲解mybatis-plus的高级查询功能。
准备数据
#创建用户表 CREATE TABLE user ( id BIGINT(20) PRIMARY KEY NOT NULL COMMENT '主键', name VARCHAR(30) DEFAULT NULL COMMENT '姓名', age INT(11) DEFAULT NULL COMMENT '年龄', email VARCHAR(50) DEFAULT NULL COMMENT '邮箱', manager_id BIGINT(20) DEFAULT NULL COMMENT '直属上级id', create_time DATETIME DEFAULT NULL COMMENT '创建时间', CONSTRAINT manager_fk FOREIGN KEY (manager_id) REFERENCES user (id) ) ENGINE=INNODB CHARSET=UTF8; #初始化数据: INSERT INTO user (id, name, age, email, manager_id , create_time) VALUES (1087982257332887553, '大boss', 40, '[email protected]', NULL, '2019-01-11 14:20:20'), (1088248166370832385, '王天风', 25, '[email protected]', 1087982257332887553, '2019-02-05 11:12:22'), (1088250446457389058, '李艺伟', 28, '[email protected]', 1088248166370832385, '2019-02-14 08:31:16'), (1094590409767661570, '张雨琪', 31, '[email protected]', 1088248166370832385, '2019-01-14 09:15:15'), (1094592041087729666, '刘红雨', 32, '[email protected]', 1088248166370832385, '2019-01-14 09:48:16');
User
表结构如下:
id | name | age | manager_id | create_time | ||
---|---|---|---|---|---|---|
1 | Jone | 18 | [email protected] | null |
|
|
2 | Jack | 20 | [email protected] | 1 |
|
|
3 | Tom | 28 | [email protected] | 2 |
|
|
4 | Sandy | 21 | [email protected] | 2 |
|
|
5 | Billie | 24 | [email protected] | 2 |
|
难度系数 ★★★
难度系数 ★★★
难度系数 ★
难度系数 ★★
难度系数 ★★★
考察 and 嵌套
1 /* 2 * 描述:例1.5 查询名字为"J"开头并且满足条件:年龄小于20或邮箱不为空 3 * SQL语句:SELECT id,name,age,email,manager_id,create_time FROM user WHERE (name LIKE 'J%' AND ( (age < 20 OR email IS NOT NULL) )) 4 * 作者:博客园-悟空聊架构 5 * 时间:2019-01-31 6 * Github:https://github.com/Jackson0714/study-mybatis-plus.git 7 * 博客园:https://www.cnblogs.com/jackson0714 8 * */ 9 @Test 10 public void testSelectByQueryWrapper5() { 11 System.out.println(("----- 名字为'J'开头并且(年龄小于20或邮箱不为空) ------")); 12 QueryWrapperqueryWrapper = new QueryWrapper<>(); 13 queryWrapper.likeRight("name", "J").and(qw->qw.lt("age", 20).or().isNotNull("email")); 14 List userList = userMapper.selectList(queryWrapper); 15 userList.forEach(System.out::println); 16 }
查询日志:
查询结果:
难度系数 ★★★
考察 nested 用法
1 /* 2 * 描述:例1.6 查询年龄小于20或邮箱不为空且满足条件:名字为"J"开头 3 * SQL语句:SELECT id,name,age,email,manager_id,create_time FROM user WHERE (( (age < 20 OR email IS NOT NULL)) AND name LIKE 'J%') 4 * 作者:博客园-悟空聊架构 5 * 时间:2019-01-31 6 * Github:https://github.com/Jackson0714/study-mybatis-plus.git 7 * 博客园:https://www.cnblogs.com/jackson0714 8 * */ 9 @Test 10 public void testSelectByQueryWrapper6() { 11 System.out.println(("----- 名字为'J'开头并且(年龄小于20或邮箱不为空) ------")); 12 QueryWrapperqueryWrapper = new QueryWrapper<>(); 13 queryWrapper.nested(qw->qw.lt("age", 20).or().isNotNull("email")) 14 .likeRight("name", "J"); 15 List userList = userMapper.selectList(queryWrapper); 16 userList.forEach(System.out::println); 17 }
查询日志:
查询结果
难度系数 ★
考察 in 用法
1 /* 2 * 描述:例1.7 查询年龄为20、21、25、26的用户 3 * SQL语句:SELECT id,name,age,email,manager_id,create_time FROM user WHERE age IN (20,21,25,26) 4 * 作者:博客园-悟空聊架构 5 * 时间:2019-01-31 6 * Github:https://github.com/Jackson0714/study-mybatis-plus.git 7 * 博客园:https://www.cnblogs.com/jackson0714 8 * */ 9 @Test 10 public void testSelectByQueryWrapper7() { 11 System.out.println(("----- 名字为'J'开头并且(年龄小于20或邮箱不为空) ------")); 12 QueryWrapperqueryWrapper = new QueryWrapper<>(); 13 queryWrapper.in("age", Arrays.asList(20,21,25,26)); 14 List userList = userMapper.selectList(queryWrapper); 15 userList.forEach(System.out::println); 16 }
查询结果
难度系数 ★★
考察 last 和 limit 用法
1 /* 2 * 描述:例1.8 查询年龄为20、21、25、26的用户,且只需返回第一条记录 3 * SQL语句:SELECT id,name,age,email,manager_id,create_time FROM user WHERE age IN (20,21,25,26) 4 * 作者:博客园-悟空聊架构 5 * 时间:2019-01-31 6 * Github:https://github.com/Jackson0714/study-mybatis-plus.git 7 * 博客园:https://www.cnblogs.com/jackson0714 8 * */ 9 @Test 10 public void testSelectByQueryWrapper8() { 11 System.out.println(("----- 查询年龄为20、21、25、26的用户,且只需返回第一条记录 ------")); 12 QueryWrapperqueryWrapper = new QueryWrapper<>(); 13 queryWrapper.in("age", Arrays.asList(20,21,25,26)).last("limit 1"); 14 List userList = userMapper.selectList(queryWrapper); 15 userList.forEach(System.out::println); 16 }
查询日志:
查询结果:
每天玩转3分钟 MyBatis-Plus - 1. 配置环境
每天玩转3分钟 MyBatis-Plus - 2. 普通查询
每天玩转3分钟 MyBatis-Plus - 3. 高级查询(一)
每天玩转3分钟 MyBatis-Plus - 4. 高级查询(二)
每天玩转3分钟 MyBatis-Plus - 5. 高级查询(三)
作 者:悟空聊架构
出 处:http://www.cnblogs.com/jackson0714/
关于作者:专注于移动开发。如有问题或建议,请多多赐教!
版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。
特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者直接私信我
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是作者坚持原创和持续写作的最大动力!
悟空聊架构
关注我,带你每天进步一点点!