zoukankan      html  css  js  c++  java
  • 每天玩转3分钟 MyBatis-Plus

    每天玩转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 表结构如下:

    idnameageemailmanager_idcreate_time
    1 Jone 18 test1@baomidou.com null
    2020-01-01 14:20:20
    2 Jack 20 test2@baomidou.com 1
    2020-01-20 14:20:20
    3 Tom 28 test3@baomidou.com 2
    2020-01-15 14:20:20
    4 Sandy 21 test4@baomidou.com 2
    2020-01-12 14:20:20
    5 Billie 24 test5@baomidou.com 2
    2020-01-22 14:20:20

    一、案例汇总(第三波)

    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 /*
     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     QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    13     queryWrapper.likeRight("name", "J").and(qw->qw.lt("age", 20).or().isNotNull("email"));
    14     List<User> userList = userMapper.selectList(queryWrapper);
    15     userList.forEach(System.out::println);
    16 }

    查询日志:

    查询结果:

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

    难度系数 ★★★

    考察 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     QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    13     queryWrapper.nested(qw->qw.lt("age", 20).or().isNotNull("email"))
    14             .likeRight("name", "J");
    15     List<User> userList = userMapper.selectList(queryWrapper);
    16     userList.forEach(System.out::println);
    17 }

    查询日志: 

    查询结果

     

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

    难度系数 ★

    考察 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     QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    13     queryWrapper.in("age", Arrays.asList(20,21,25,26));
    14     List<User> userList = userMapper.selectList(queryWrapper);
    15     userList.forEach(System.out::println);
    16 }

     

    查询结果 

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

    难度系数 ★★

    考察 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     QueryWrapper<User> queryWrapper = new QueryWrapper<>();
    13     queryWrapper.in("age", Arrays.asList(20,21,25,26)).last("limit 1");
    14     List<User> 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. 高级查询(三)

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


    作  者:悟空聊架构 
    出  处:http://www.cnblogs.com/jackson0714/ 
    关于作者:专注于移动开发。如有问题或建议,请多多赐教! 
    版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。 
    特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者直接私信我 
    声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐】一下。您的鼓励是作者坚持原创和持续写作的最大动力! 

    悟空聊架构 

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

  • 相关阅读:
    物联网浪潮之下如何从 0 到 1开启智能化硬件开发?
    安卓开发工程师应该这样快速使用机智云APP开源框架
    hdu 1246
    UVa202
    CodeForces
    热身经验被打脸总结大会感想
    多重背包的二进制优化
    背包问题+欧拉筛法
    HDU 1106
    HDU 1215
  • 原文地址:https://www.cnblogs.com/jackson0714/p/study-mybatis-plus5.html
Copyright © 2011-2022 走看看