一、引言

那么那么那么今天来说下MP中强大的条件查询功能。

本章是基于上个案例来讲的:MyBaits-Plus 快速入门案例

二、具体操作

首先来说说基本的查询吧,根据主键或者简单的查询条件进行查询。

    /*** 通过单个ID主键进行查询*/@Testpublic void selectById() {User user = userMapper.selectById(1094592041087729666L);System.out.println(user);}/*** 通过多个ID主键查询*/@Testpublic void selectByList() {List<Long> longs = Arrays.asList(1094592041087729666L, 1094590409767661570L);List<User> users = userMapper.selectBatchIds(longs);users.forEach(System.out::println);}/*** 通过Map参数进行查询*/@Testpublic void selectByMap() {Map<String, Object> params = new HashMap<>();params.put("name", "张雨琪");List<User> users = userMapper.selectByMap(params);users.forEach(System.out::println);}

MyBatis-Plus还提供了Wrapper条件构造器,具体使用看如下代码:

/*** 名字包含雨并且年龄小于40* <p>* WHERE name LIKE '%雨%' AND age < 40*/@Testpublic void selectByWrapperOne() {QueryWrapper<User> wrapper = new QueryWrapper();wrapper.like("name", "雨").lt("age", 40);List<User> users = userMapper.selectList(wrapper);users.forEach(System.out::println);}/*** 名字包含雨* 年龄大于20小于40* 邮箱不能为空* <p>* WHERE name LIKE '%雨%' AND age BETWEEN 20 AND 40 AND email IS NOT NULL*/@Testpublic void selectByWrapperTwo() {QueryWrapper<User> wrapper = Wrappers.query();wrapper.like("name", "雨").between("age", 20, 40).isNotNull("email");List<User> users = userMapper.selectList(wrapper);users.forEach(System.out::println);}/*** 名字为王性* 或者年龄大于等于25* 按照年龄降序排序,年龄相同按照id升序排序* <p>* WHERE name LIKE '王%' OR age >= 25 ORDER BY age DESC , id ASC*/@Testpublic void selectByWrapperThree() {QueryWrapper<User> wrapper = Wrappers.query();wrapper.likeRight("name", "王").or().ge("age", 25).orderByDesc("age").orderByAsc("id");List<User> users = userMapper.selectList(wrapper);users.forEach(System.out::println);}/*** 查询创建时间为2019年2月14* 并且上级领导姓王* <p>* WHERE date_format(create_time,'%Y-%m-%d') = '2019-02-14' AND manager_id IN (select id from user where name like '王%')*/@Testpublic void selectByWrapperFour() {QueryWrapper<User> wrapper = Wrappers.query();wrapper.apply("date_format(create_time,'%Y-%m-%d') = {0}", "2019-02-14").inSql("manager_id", "select id from user where name like '王%'");List<User> users = userMapper.selectList(wrapper);users.forEach(System.out::println);}/*** 查询王姓* 并且年龄小于40或者邮箱不为空* <p>* WHERE name LIKE '王%' AND ( age < 40 OR email IS NOT NULL )*/@Testpublic void selectByWrapperFive() {QueryWrapper<User> wrapper = Wrappers.query();wrapper.likeRight("name", "王").and(qw -> qw.lt("age", 40).or().isNotNull("email"));List<User> users = userMapper.selectList(wrapper);users.forEach(System.out::println);}/*** 查询王姓* 并且年龄大于20 、年龄小于40、邮箱不能为空* <p>* WHERE name LIKE ? OR ( age BETWEEN ? AND ? AND email IS NOT NULL )*/@Testpublic void selectByWrapperSix() {QueryWrapper<User> wrapper = Wrappers.query();wrapper.likeRight("name", "王").or(qw -> qw.between("age", 20, 40).isNotNull("email"));List<User> users = userMapper.selectList(wrapper);users.forEach(System.out::println);}/*** (年龄小于40或者邮箱不为空) 并且名字姓王* WHERE ( age < 40 OR email IS NOT NULL ) AND name LIKE '王%'*/@Testpublic void selectByWrapperSeven() {QueryWrapper<User> wrapper = Wrappers.query();wrapper.nested(qw -> qw.lt("age", 40).or().isNotNull("email")).likeRight("name", "王");List<User> users = userMapper.selectList(wrapper);users.forEach(System.out::println);}/*** 查询年龄为30、31、32* WHERE age IN (?,?,?)*/@Testpublic void selectByWrapperEight() {QueryWrapper<User> wrapper = Wrappers.query();wrapper.in("age", Arrays.asList(30, 31, 32));List<User> users = userMapper.selectList(wrapper);users.forEach(System.out::println);}/*** 查询一条数据* limit 1*/@Testpublic void selectByWrapperNine() {QueryWrapper<User> wrapper = Wrappers.query();wrapper.in("age", Arrays.asList(30, 31, 32)).last("limit 1");List<User> users = userMapper.selectList(wrapper);users.forEach(System.out::println);}

MyBatis-Plus Wrapper条件构造器查询大全相关推荐

  1. MyBatis-Plus Wrapper条件构造器查询

    /*** 通过单个ID主键进行查询*/@Testpublic void selectById() {User user = userMapper.selectById(1094592041087729 ...

  2. Mybatis-Plus中的查(select)和 Wrapper条件构造器-详解 V2.0

    V1.0 已更新为 V-2.0  传送门→ (V-2.0)Mybatis-Plus中的查(select)和QueryWrapper条件构造器​​​​​​​ 前言 本文介绍 mybatis-plus 中 ...

  3. MyBatisPlus3.x中使用条件构造器查询某一天的记录数时的日期格式化注意

    场景 前端传过来时间,比如是'2019-05-09' 后台使用条件构造器查询数据库中某一天的记录数. 因为涉及到时间格式的问题,如果直接用时间字段是否相等来判断则不行.所以这里使用MyBatisPlu ...

  4. MybatisPlus QueryWrapper(简称 QW,MP 封装的一个查询条件构造器)的使用和简单认识

    上一篇讲的是MybatisPlus的MP注解用法和简单介绍 传送门 (跟上一篇是同一个项目)先来创一个Springboot测试项目 创建一个数据库 -- 创建表 CREATE TABLE t_empl ...

  5. MyBatisPlus条件构造器带条件查询selectList使用

    场景 项目搭建专栏: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/column/info/37194 基础搭建: https://blog.csdn.net/B ...

  6. 第 4 章 MybatisPlus 条件构造器

    第 4 章 MybatisPlus 条件构造器 1.CRUD API 的思考 对于 BaseMapper 中基本 CRUD 方法的思考 继承了 BaseMapper 接口后,我们只能获得基本的 CRU ...

  7. MybatisPlus条件构造器说明以及selectPage方法

    场景 项目搭建专栏: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/column/info/37194 基础搭建: https://blog.csdn.net/B ...

  8. MybatisPlus核心功能——实现CRUD增删改查操作 (包含条件构造器)

    条件构造器 一般都是用service层的方法,因为比mapper层的全.十分重要:Wrapper 记住查看输出的SQL进行分析 相当于创建一个构造器对象,然后讲需要查询or更新的条件写在里面,最后打包 ...

  9. MyBatisPlus中条件构造器中or和orNew的区别

    场景 项目搭建专栏: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/column/info/37194 实现 编写单元测试看区别 /****条件构造器 查询操作S ...

最新文章

  1. 【逆向工具】IDA使用5-( string、图形化与视图的切换、图形化显示反汇编地址、自动注释、标签使用)...
  2. xshell 5如何选中即复制,右键即粘贴
  3. SpringBoot_数据访问-整合Druid配置数据源监控
  4. python爬虫实际应用_如何使用python爬虫论坛?
  5. 添加公共引用目录_3分钟解决200页Word生成目录的问题,无需插件,领导看了直夸奖...
  6. 机器学习中的相似性度量(转载)
  7. 【SpringClould】SpringClould eureka 单机与集群搭建
  8. python一个函数可以有参数也可以没有参数_Python:有和没有关键字参数的lambda函数行为?...
  9. JavaEE之HTML常见标签及个人简历制作
  10. 《理财市场情绪监测系统》代码实现【1】之行业词库
  11. 实现离线地图行政区域划分
  12. Android 接入穿山甲广告
  13. 多模模块接单模光纤跳线/单模模块接多模光纤跳线
  14. 什么是类?以及类的分类
  15. 桂电计算机系入学怎么分班,桂电研究生-()学期课程总表
  16. Vue3初识 学习记录(一)
  17. JAVA第二次作业《胖瘦程度计算》
  18. 软件工程大作业(完整详细)火车订票管理系统
  19. NLPCC2023 | 视频定位问答比赛CMIVQA赛题解析
  20. python 三大器

热门文章

  1. PTA C语言找不同
  2. 均热板 热管_引入 “超导热管” “均热板” 新材料 进LED 手电,欢迎大...
  3. Word小技巧—页码设置问题
  4. 如何成为一个渗透测试员(国外知名黑客大神Corelan Team (corelanc0d3r)分享技术干货)
  5. 21.Mysql数据库连接配置
  6. 工信部:5G-A是5G向6G演进的关键阶段
  7. 如何解决centos8下载速度慢
  8. 内网安全之:Exchange 服务器安全
  9. 使用IronOCR识别图片文字
  10. 自己写的一个android作品—测名取名