每天玩转3分钟 MyBatis-Plus - 3. 高级查询(一)(条件构造器)

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

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

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

代码下载:https://github.com/Jackson0714/study-mybatis-plus.git

mybatis-plus的查询功能非常强大, 上一篇,我们介绍了mybatis-plus的普通查询功能,这一篇我们介绍mybatis-plus的高级查询功能。通过几个查询需求来讲解。

准备数据

User 表结构如下:

id name age email
1 Jone 18 [email protected]
2 Jack 20 [email protected]
3 Tom 28 [email protected]
4 Sandy 21 [email protected]
5 Billie 24 [email protected]

一、案例汇总(第一波)

1.1 查询名字中包含“Ja”并且年龄小于30的用户

难度系数 ★☆

1.2 查询名字中包含“a”并且年龄大于等于15且年龄小于等于25,且email不为空

难度系数 ★☆

1.3 查询名字中“J”开头并且年龄大于等于25,按照年龄降序排列,年龄相同按照id升序排列

难度系数 ★★★

二、案例讲解

1.1 查询名字中包含“Ja”并且年龄小于30的用户

难度系数 ★☆

考察 like、lt用法

name LIKE ‘%Ja%‘ age < 30

 1     /*
 2      * 描述:例2.1 查询名字中包含“Ja”并且年龄小于30的用户
 3      * 作者:博客园-悟空聊架构
 4      * 时间:2019-01-20
 5      * Github:https://github.com/Jackson0714/study-mybatis-plus.git
 6      * 博客园:https://www.cnblogs.com/jackson0714
 7      * */
 8     @Test
 9     public void testSelectByQueryWrapper() {
10         System.out.println(("----- 查询名字中包含“Ja”并且年龄小于30的用户------"));
11         QueryWrapper<User> queryWrapper = new QueryWrapper<>();
12         queryWrapper.like("name", "ja").lt("age", 30);
13         List<User> userList = userMapper.selectList(queryWrapper);
14         userList.forEach(System.out::println);
15     }

1.2 查询名字中包含“a”并且年龄大于等于15且年龄小于等于25,且email不为空

难度系数 ★☆考察 between 用法

SQL语句:name LIKE ‘%a%‘ AND age BETWEEN 15 AND 25 AND email IS NOT NULL

 1     /*
 2      * 描述:例1.2 查询名字中包含“a”并且年龄大于等于15且年龄小于等于35,且email不为空
 3      * 作者:博客园-悟空聊架构
 4      * 时间:2019-01-20
 5      * Github:https://github.com/Jackson0714/study-mybatis-plus.git
 6      * 博客园:https://www.cnblogs.com/jackson0714
 7      * */
 8     @Test
 9     public void testSelectByQueryWrapper2() {
10         System.out.println(("----- 查询名字中包含“a”并且年龄大于等于15且年龄小于等于25,且email不为空------"));
11         QueryWrapper<User> queryWrapper = new QueryWrapper<>();
12         //queryWrapper.like("name", "a").ge("age", 15).le("age", 25).isNotNull("email");
13         queryWrapper.like("name", "a").between("age", 15,25).isNotNull("email");
14         List<User> userList = userMapper.selectList(queryWrapper);
15         userList.forEach(System.out::println);
16     }

1.3 查询名字中“J”开头并且年龄大于等于25,按照年龄降序排列,年龄相同按照id升序排列

难度系数 ★★★
考察 likeRight、orderByDesc、orderByAsc 用法
SQL语句:name LIKE ‘J%‘ or age > 25 ORDER BY age desc, id ASC
 1     /*
 2      * 描述:例1.3 查询名字中“J”开头并且年龄大于26,按照年龄降序排列,年龄相同按照id升序排列
 3      * SQL语句:name LIKE ‘J%‘ or age > 26 ORDER BY age desc, id ASC
 4      * 作者:博客园-悟空聊架构
 5      * 时间:2019-01-20
 6      * Github:https://github.com/Jackson0714/study-mybatis-plus.git
 7      * 博客园:https://www.cnblogs.com/jackson0714
 8      * */
 9     @Test
10     public void testSelectByQueryWrapper3() {
11         System.out.println(("----- 查询名字中包含“a”并且年龄大于26,按照年龄降序排列,年龄相同按照id升序排列 ------"));
12         QueryWrapper<User> queryWrapper = new QueryWrapper<>();
13         queryWrapper.likeRight("name","J").or().gt("age",26).orderByDesc("age")
14                 .orderByAsc("id");
15         List<User> userList = userMapper.selectList(queryWrapper);
16         userList.forEach(System.out::println);
17     }

原文地址:https://www.cnblogs.com/jackson0714/p/study-mybatis-plus3.html

时间: 2024-11-12 13:19:23

每天玩转3分钟 MyBatis-Plus - 3. 高级查询(一)(条件构造器)的相关文章

使用MyBatis的resultMap高级查询时常用的方式总结

以下内容已经通过楼主测试, 从pd设计数据库到测试完成, 之前楼主也没有过Mybatis 使用resultMap觉得有点乱,最近抽出时间总结了一下也算对MyBatis的resultMap进行一次系统的学习, 希望与大家分享学习心得, 有说的不对的地方请大家帮指教 下面是PD设计的几张数据库模型 先说下表吧 多对多 采用 传统而经典的 用户角色表,并没有采用当今流行的联合主键方式 而是将 用户表_id 和 角色表_id 进行Unique 详情参见http://www.cnblogs.com/Yin

每天玩转3分钟 MyBatis-Plus - 4. 高级查询(二)(条件构造器)

每天玩转3分钟 MyBatis-Plus - 1. 配置环境 每天玩转3分钟 MyBatis-Plus - 2. 普通查询 每天玩转3分钟 MyBatis-Plus - 3. 高级查询(一) 每天玩转3分钟 MyBatis-Plus - 4. 高级查询(二) 代码下载:https://github.com/Jackson0714/study-mybatis-plus.git mybatis-plus的查询功能非常强大, 上一篇,我们通过例题的方式讲解了mybatis-plus的高级查询功能:条件

每天玩转3分钟 MyBatis-Plus - 6. select 用法

每天玩转3分钟 MyBatis-Plus - 1. 配置环境 每天玩转3分钟 MyBatis-Plus - 2. 普通查询 每天玩转3分钟 MyBatis-Plus - 3. 高级查询(一) 每天玩转3分钟 MyBatis-Plus - 4. 高级查询(二) 每天玩转3分钟 MyBatis-Plus - 5. 高级查询(三) 每天玩转3分钟 MyBatis-Plus - 6. select 查询 代码下载:https://github.com/Jackson0714/study-mybatis-

mybatis学习笔记(13)-查询缓存之二级缓存

mybatis学习笔记(13)-查询缓存之二级缓存 mybatis学习笔记13-查询缓存之二级缓存 二级缓存原理 开启二级缓存 调用pojo类实现序列化接口 测试方法 useCache配置 刷新缓存就是清空缓存 应用场景和局限性 本文主要讲mybatis的二级缓存,二级缓存是mapper级别的缓存,多个SqlSession去操作同一个Mapper的sql语句,多个SqlSession可以共用二级缓存,二级缓存是跨SqlSession的. 二级缓存原理 首先开启mybatis的二级缓存. sqlS

Mybatis学习记录(四)--高级查询和缓存

这些都是连贯的学习笔记,所以有的地方因为之前都说过,所以也就没怎么写详细了,看不太明白的可以看看之前的笔记. 一.高级查询 高级查询主要是一对一查询,一对多查询,多对多查询 1.一对一查询 有用户和订单两个表,用户对订单是1对1查询.也就是订单中有一个外键是指向用户的. 先创建实体类: User.java public class User { private int id; private String username; private String password; private St

Mybatis使用MySQL模糊查询时输入中文检索不到结果怎么办--转自http://www.jb51.net/article/88236.htm

这篇文章主要介绍了Mybatis使用MySQL模糊查询时输入中文检索不到结果的解决办法的相关资料,非常不错,具有参考借鉴价值,需要的朋友可以参考下 项目开发中,在做Mybatis动态查询时,遇到了一个问题:MySQL在进行LIKE模糊查询时,输入英文可以正常检索出结果,但是输入中文后检索得到的结果为空. 由于是使用GET方式请求,所以为了确保中文不乱码,在控制台接收到请求参数后,对中文进行了一次编码. ? 1 2 3 4 5 try { realName = new String(realNam

MyBatis学习总结_13_Mybatis查询之resultMap和resultType区别

MyBatis的每一个查询映射的返回类型都是ResultMap,只是当我们提供的返回类型属性是resultType的时候,MyBatis对自动的给我们把对应的值赋给resultType所指定对象的属性,而当我们提供的返回类型是resultMap的时候,将数据库中列数据复制到对象的相应属性上,可以用于复制查询,两者不能同时用. 1.resultType 返回单个实例 <select id="selectUser" parameterType="int" resu

Mybatis实现关联表查询

一.一对一关联 1.1.提出需求 根据班级id查询班级信息(带老师的信息) 1.2.创建表和数据 创建一张教师表和班级表,这里我们假设一个老师只负责教一个班,那么老师和班级之间的关系就是一种一对一的关系. 1 CREATE TABLE teacher( 2 t_id INT PRIMARY KEY AUTO_INCREMENT, 3 t_name VARCHAR(20) 4 ); 5 CREATE TABLE class( 6 c_id INT PRIMARY KEY AUTO_INCREMEN

Mybatis最入门---动态查询(foreach)

[一步是咫尺,一步即天涯] 本文,我们来介绍使用Mybatis提供的<foreach>标签实现我们某些循环增改删差的需求.官方文档中的内容过于简陋,于是,博主筛选出比较全面讲述foreach用法的的内容,并且配有例子.希望各位看官能够手动敲一遍下面的例子,达到快速学习的目的. 准备工作: a.操作系统 :win7 x64 b.基本软件:MySQL,Mybatis,SQLyog -----------------------------------------------------------