ITPub博客

首页 > 数据库 > 数据库开发技术 > 每天玩转3分钟 MyBatis-Plus - 5.高级查询(三)

每天玩转3分钟 MyBatis-Plus - 5.高级查询(三)

原创 数据库开发技术 作者:悟空聊架构 时间:2020-01-31 16:01:16 0 删除 编辑

阅读目录

  • 一、案例汇总(第三波)

  • 二、案例讲解

每天玩转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, 'boss@baomidou.com', NULL, '2019-01-11 14:20:20'), (1088248166370832385, '王天风', 25, 'wtf@baomidou.com', 1087982257332887553, '2019-02-05 11:12:22'), (1088250446457389058, '李艺伟', 28, 'lyw@baomidou.com', 1088248166370832385, '2019-02-14 08:31:16'), (1094590409767661570, '张雨琪', 31, 'zjq@baomidou.com', 1088248166370832385, '2019-01-14 09:15:15'), (1094592041087729666, '刘红雨', 32, 'lhm@baomidou.com', 1088248166370832385, '2019-01-14 09:48:16');

User 表结构如下:

一、案例汇总(第三波)

1.1 查询名字为"J"开头并且满足条件:年龄小于20或邮箱不为空

难度系数 ★★★

1.2 查询年龄小于20或邮箱不为空且满足条件:名字为"J"开头

难度系数 ★★★

1.3 查询年龄为20、21、25、26的用户

难度系数 ★

1.4 查询年龄为20、21、25、26的用户,且只需返回第一条记录

难度系数 ★★

二、案例讲解

1.1 查询名字为"J"开头并且满足条件:年龄小于20或邮箱不为空


难度系数 ★★★

考察 and 嵌套

/* * 描述:例1.5 查询名字为"J"开头并且满足条件:年龄小于20或邮箱不为空 * SQL语句:SELECT id,name,age,email,manager_id,create_time FROM user WHERE (name LIKE 'J%' AND ( (age < 20 OR email IS NOT NULL) )) * 作者:博客园-悟空聊架构 * 时间:2019-01-31 * Github:https://github.com/Jackson0714/study-mybatis-plus.git * 博客园:https://www.cnblogs.com/jackson0714 * */@Testpublic void testSelectByQueryWrapper5() {    System.out.println(("----- 名字为'J'开头并且(年龄小于20或邮箱不为空) ------"));    QueryWrapper<User> queryWrapper = new QueryWrapper<>();    queryWrapper.likeRight("name", "J").and(qw->qw.lt("age", 20).or().isNotNull("email"));    List<User> userList = userMapper.selectList(queryWrapper);    userList.forEach(System.out::println);}

查询日志:

查询结果:

1.2 查询年龄小于20或邮箱不为空且满足条件:名字为"J"开头


难度系数 ★★★

考察 nested 用法

/* * 描述:例1.6 查询年龄小于20或邮箱不为空且满足条件:名字为"J"开头 * SQL语句:SELECT id,name,age,email,manager_id,create_time FROM user WHERE (( (age < 20 OR email IS NOT NULL)) AND name LIKE 'J%') * 作者:博客园-悟空聊架构 * 时间:2019-01-31 * Github:https://github.com/Jackson0714/study-mybatis-plus.git * 博客园:https://www.cnblogs.com/jackson0714 * */@Testpublic void testSelectByQueryWrapper6() {    System.out.println(("----- 名字为'J'开头并且(年龄小于20或邮箱不为空) ------"));    QueryWrapper<User> queryWrapper = new QueryWrapper<>();    queryWrapper.nested(qw->qw.lt("age", 20).or().isNotNull("email"))            .likeRight("name", "J");    List<User> userList = userMapper.selectList(queryWrapper);    userList.forEach(System.out::println);}

查询日志: 

查询结果

 

1.3 查询年龄为20、21、25、26的用户

难度系数 ★

考察 in 用法

/* * 描述:例1.7 查询年龄为20、21、25、26的用户 * SQL语句:SELECT id,name,age,email,manager_id,create_time FROM user WHERE age IN (20,21,25,26) * 作者:博客园-悟空聊架构 * 时间:2019-01-31 * Github:https://github.com/Jackson0714/study-mybatis-plus.git * 博客园:https://www.cnblogs.com/jackson0714 * */@Testpublic void testSelectByQueryWrapper7() {    System.out.println(("----- 名字为'J'开头并且(年龄小于20或邮箱不为空) ------"));    QueryWrapper<User> queryWrapper = new QueryWrapper<>();    queryWrapper.in("age", Arrays.asList(20,21,25,26));    List<User> userList = userMapper.selectList(queryWrapper);    userList.forEach(System.out::println);}

 

查询结果 

1.4 查询年龄为20、21、25、26的用户,且只需返回第一条记录

难度系数 ★★

考察 last 和 limit 用法

/* * 描述:例1.8 查询年龄为20、21、25、26的用户,且只需返回第一条记录 * SQL语句:SELECT id,name,age,email,manager_id,create_time FROM user WHERE age IN (20,21,25,26) * 作者:博客园-悟空聊架构 * 时间:2019-01-31 * Github:https://github.com/Jackson0714/study-mybatis-plus.git * 博客园:https://www.cnblogs.com/jackson0714 * */@Testpublic void testSelectByQueryWrapper8() {    System.out.println(("----- 查询年龄为20、21、25、26的用户,且只需返回第一条记录 ------"));    QueryWrapper<User> queryWrapper = new QueryWrapper<>();    queryWrapper.in("age", Arrays.asList(20,21,25,26)).last("limit 1");    List<User> userList = userMapper.selectList(queryWrapper);    userList.forEach(System.out::println);}

查询日志:

查询结果:

 

 

每天玩转3分钟 MyBatis-Plus - 1. 配置环境

每天玩转3分钟 MyBatis-Plus - 2. 普通查询

每天玩转3分钟 MyBatis-Plus - 3. 高级查询(一)

每天玩转3分钟 MyBatis-Plus - 4. 高级查询(二)

每天玩转3分钟 MyBatis-Plus - 5. 高级查询(三)

关注公众号:悟空聊架构,回复pmp,领取pmp资料!回复悟空,领取架构师资料!

悟空聊架构 

关注我,带你每天进步一点点!


原文作者:悟空聊架构;如有侵权,请联系管理员删除。

请登录后发表评论 登录
全部评论

注册时间:2018-12-24

  • 博文量
    228
  • 访问量
    143844