java 多条件查询构造条件_每天玩转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 queryWrapper = 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 }

查询日志:

9657cf90da81ebe636fa4b91c71208bf.png

查询结果:

6282cb0bd71bac450eca98536aa816e1.png

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

难度系数 ★★★

考察 nested 用法

abc556d3d95129a92e1fd12957b9a44c.png

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 queryWrapper = 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 }

查询日志:

36c69829a71cd48c5750edb11fe26861.png

查询结果

f7b2c181fa639658164a95baee41af36.png

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 queryWrapper = 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 }

c94086e47cb7fd5f14516c67fdb40c31.png

查询结果

80fca66096a98b3e2ad26b6b46f66f71.png

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

难度系数 ★★

考察 last 和 limit 用法

4d642181de5a5134185918a7269cdf05.png

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 queryWrapper = 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 }

查询日志:

be4fffc5ea38d31261131c9c8f7e61fc.png

查询结果:

139d6708d8417d8a05de221b93e2fb31.png

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

作  者:悟空聊架构

出  处:http://www.cnblogs.com/jackson0714/

关于作者:专注于移动开发。如有问题或建议,请多多赐教!

版权声明:本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文链接。

特此声明:所有评论和私信都会在第一时间回复。也欢迎园子的大大们指正错误,共同进步。或者直接私信我

声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是作者坚持原创和持续写作的最大动力!

悟空聊架构

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

b739ec46bb5c46d9c0aa4ce35ba1ea56.png

关于找一找教程网

本站文章仅代表作者观点,不代表本站立场,所有文章非营利性免费分享。

本站提供了软件编程、网站开发技术、服务器运维、人工智能等等IT技术文章,希望广大程序员努力学习,让我们用科技改变世界。

[每天玩转3分钟 MyBatis-Plus - 5. 高级查询(三)(条件构造器)]http://www.zyiz.net/tech/detail-102910.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值