每天玩转 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 | |
---|---|---|---|
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
- /*
- * 描述: 例 2.1 查询名字中包含 "Ja" 并且年龄小于 30 的用户
- * 作者: 博客园 - 悟空聊架构
- * 时间: 2019-01-20
- * GitHub:https://github.com/Jackson0714/study-mybatis-plus.git
- * 博客园: https://www.cnblogs.com/jackson0714
- * */
- @Test
- public void testSelectByQueryWrapper() {
- System.out.println(("----- 查询名字中包含"Ja"并且年龄小于 30 的用户 ------"));
- QueryWrapper<User> queryWrapper = new QueryWrapper<>();
- queryWrapper.like("name", "ja").lt("age", 30);
- List<User> userList = userMapper.selectList(queryWrapper);
- userList.forEach(System.out::println);
- }
1.2 查询名字中包含 "a" 并且年龄大于等于 15 且年龄小于等于 25, 且 email 不为空
难度系数 ★☆
考察 between 用法
SQL 语句: name LIKE '%a%' AND age BETWEEN 15 AND 25 AND email IS NOT NULL
- /*
- * 描述: 例 1.2 查询名字中包含 "a" 并且年龄大于等于 15 且年龄小于等于 35, 且 email 不为空
- * 作者: 博客园 - 悟空聊架构
- * 时间: 2019-01-20
- * GitHub:https://github.com/Jackson0714/study-mybatis-plus.git
- * 博客园: https://www.cnblogs.com/jackson0714
- * */
- @Test
- public void testSelectByQueryWrapper2() {
- System.out.println(("----- 查询名字中包含"a"并且年龄大于等于 15 且年龄小于等于 25, 且 email 不为空 ------"));
- QueryWrapper<User> queryWrapper = new QueryWrapper<>();
- //queryWrapper.like("name", "a").ge("age", 15).le("age", 25).isNotNull("email");
- queryWrapper.like("name", "a").between("age", 15,25).isNotNull("email");
- List<User> userList = userMapper.selectList(queryWrapper);
- userList.forEach(System.out::println);
- }
1.3 查询名字中 "J" 开头并且年龄大于等于 25, 按照年龄降序排列, 年龄相同按照 id 升序排列
难度系数 ★★★
考察 likeRight,orderByDesc,orderByAsc 用法
SQL 语句: name LIKE 'J%' or age> 25 ORDER BY age desc, id ASC
- /*
- * 描述: 例 1.3 查询名字中 "J" 开头并且年龄大于 26, 按照年龄降序排列, 年龄相同按照 id 升序排列
- * SQL 语句: name LIKE 'J%' or age> 26 ORDER BY age desc, id ASC
- * 作者: 博客园 - 悟空聊架构
- * 时间: 2019-01-20
- * GitHub:https://github.com/Jackson0714/study-mybatis-plus.git
- * 博客园: https://www.cnblogs.com/jackson0714
- * */
- @Test
- public void testSelectByQueryWrapper3() {
- System.out.println(("----- 查询名字中包含"a"并且年龄大于 26, 按照年龄降序排列, 年龄相同按照 id 升序排列 ------"));
- QueryWrapper<User> queryWrapper = new QueryWrapper<>();
- queryWrapper.likeRight("name","J").or().gt("age",26).orderByDesc("age")
- .orderByAsc("id");
- List<User> userList = userMapper.selectList(queryWrapper);
- userList.forEach(System.out::println);
- }
来源: http://www.bubuko.com/infodetail-3398487.html