DQL编程控制

条件查询——设置查询条件

  • 格式一:常规格式
		//方式一:按条件查询
QueryWrapper qw = new QueryWrapper();
// 10岁到30岁之间的用户
qw.gt("age",10);
qw.lt("age",30);
List<User> users = userDao.selectList(qw);
System.out.println(users);
  • 格式二:链式编程格式
		//方式一:按条件查询
QueryWrapper qw = new QueryWrapper();
// 10岁到30岁之间的用户
qw.gt("age",10).lt("age",30);
List<User> users = userDao.selectList(qw);
System.out.println(users);
  • 格式三:lambda格式(推荐)
		//方式二:lambda格式按条件查询
QueryWrapper<User> qw = new QueryWrapper();
// 10岁到30岁之间的用户
qw.lambda().gt(User::getAge,10).lt(User::getAge,30);
List<User> users = userDao.selectList(qw);
System.out.println(users);
  • 格式四:lambda格式(推荐)
		// 方式三:lambda格式按条件查询
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>();
// 10岁到30岁之间的用户
//lqw.gt(User::getAge,10).lt(User::getAge,30);
// 小于10岁或者大于30岁的用户
lqw.gt(User::getAge,30).or().lt(User::getAge,10);
List<User> users = userDao.selectList(lqw);
System.out.println(users);
  • 直接链式编程表示且关系
  • 要表示或关系需要在中间加上.or()
		// 小于10岁或者大于30岁的用户
lqw.gt(User::getAge,30).or().lt(User::getAge,10);

条件查询——null值处理

  • 条件参数控制
		// 模拟页面传递过来的数据
UserQuery uq = new UserQuery();
//uq.setAge(10);
uq.setAge2(30); // null值判定(尽量不用链式编程,过于长了)
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper();
lqw.gt(null != uq.getAge(),User::getAge,uq.getAge());
lqw.lt(null != uq.getAge2(), User::getAge,uq.getAge2());
List<User> users = userDao.selectList(lqw);
System.out.println(users);

查询投影

  • 只查询一部分字段
		// 查询投影——只查询部分字段
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper();
lqw.select(User::getId,User::getName);
List<User> users = userDao.selectList(lqw);
System.out.println(users);
  • 若要完成模型类中未定义的属性(聚合函数)或是分组查询,则不能使用lambda格式
		// 查询count(*)  不能使用lambda格式
QueryWrapper<User> qw = new QueryWrapper();
qw.select("count(*) as count, tle");
qw.groupBy("tle");
List<Map<String, Object>> userList = userDao.selectMaps(qw);
System.out.println(userList);

查询条件

  • 匹配(等于)
		LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper();
// 等于
lqw.eq(User::getName,"王麻子").eq(User::getTle,"10086");
User loginUser = userDao.selectOne(lqw);
System.out.println(loginUser);
  • 范围查询(between)
		// 范围查询 lt-小于  le-小于等于  gt-大于  ge-大于等于 eq-等于 ne-不等于 between-范围查询
LambdaQueryWrapper<User> lqw1 = new LambdaQueryWrapper();
// 10岁到30岁之间的用户
lqw1.between(User::getAge,10,30);
List<User> userList = userDao.selectList(lqw1);
System.out.println(userList);
  • 模糊匹配(like-非全文检索版)
		// 模糊匹配 like-模糊匹配  notLike-不模糊匹配
LambdaQueryWrapper<User> lqw2 = new LambdaQueryWrapper();
// 名字带有王的用户
//lqw2.like(User::getName,"王");
// likeRight—— 王%
lqw2.likeRight(User::getName,"王");
// likeLeft—— %王
lqw2.likeLeft(User::getName,"王");
List<User> userList2 = userDao.selectList(lqw2);
System.out.println(userList2);

字段映射与表名映射

  • 问题一:表字段属性与编码属性设计不同步

  

  • 问题二编码中添加了数据库中未定义的属性

  

  • 问题三:采用默认查询(select * ...)开放了更多字段的查看权限

  

    • 使用注解:@TableField
    • 类型:属性注解
    • 位置:模型类属性定义上方
    • 作用设置当前属性对应的数据库表中的字段关系
    • 范例
    • 相关属性

      • value(默认):设置数据库表字段名称
      • exist:设置属性在数据库字段中是否存在,默认为true。此属性无法与value属性合并使用
      • select:设置属性是否参与查询,此属性与select()映射配置不冲突
  • 问题四:表名与编码开发设计不同步

  

    • 使用注解:@TableName
    • 类型:类注解
    • 位置:模型类定义上方
    • 作用:设置当前类对应与数据库表关系
    • 范例

    

    • 相关属性

      • value:设置数据库表名称

MyBatisPlus——DQL编程控制——条件查询的更多相关文章

  1. Java开发学习(四十二)----MyBatisPlus查询语句之条件查询

    一.条件查询的类 MyBatisPlus将书写复杂的SQL查询条件进行了封装,使用编程的形式完成查询条件的组合. 这个我们在前面都有见过,比如查询所有和分页查询的时候,都有看到过一个Wrapper类, ...

  2. 【mybatis-plus】条件查询

    用mp也可以方便的实现稍复杂点的条件查询,当然了很复杂的就还是要xml编写sql了. 一.wapper介绍 先看下mp的条件构造抽象类的结构: Wrapper: 条件构造抽象类,最顶端父类 Abstr ...

  3. DQL基础查询和DQL条件查询

    DQL:查询表中的记录 1.语法 select 字段列表 from 表名列表 where 条件列表 group by 分组字段 having 分组之后的条件 order by 排序 limit 分页限 ...

  4. MySQL(四)DQL语言——条件查询

    摘要:条件查询:条件表达式,逻辑表达式,模糊查询,like,通配符,转义字符,escape关键字,between and,in,is null,is not null,安全等于. 条件查询语法: SE ...

  5. SQL语言学习-DQL条件查询

    条件查询 1. where子句后跟条件 2. 运算符 * > .< .<= .>= .= .<> * BETWEEN...AND * IN( 集合) * LIKE: ...

  6. HBase高性能复杂条件查询引擎

    转自:http://blog.csdn.net/bluishglc/article/details/31799255 mark 写在前面 本文2014年7月份发表于InfoQ,HBase的PMC成员T ...

  7. MyBatisPlus---DQL编程控制

    MP将书写复杂的SQL查询条件进行了封装,使用编程的形式完成查询条件的组合. 一.条件查询 package com.itheima; import com.baomidou.mybatisplus.c ...

  8. mongodb_查询操作使用_条件查询、where子句等(转)

    <?php /*  mongodb_查询操作使用_条件查询.where子句等(转并学习)   1.find()/findOne() mongodb数据库的查询操作即使用find()或者findO ...

  9. SQL编程之高级查询(子查询)以及注意事项

    SQL编程之高级查询(子查询)以及注意事项   1.什么是子查询? 当一个查询是另一个查询的条件时,称之为子查询.子查询可以使用几个简单命令构造功能强大的复合命令.子查询最常用于SELECT-SQL命 ...

  10. 动态多条件查询分页以及排序(一)--MVC与Entity Framework版url分页版

    一.前言 多条件查询分页以及排序  每个系统里都会有这个的代码 做好这块 可以大大提高开发效率  所以博主分享下自己的6个版本的 多条件查询分页以及排序 二.目前状况 不论是ado.net 还是EF ...

随机推荐

  1. Python 使用rsa类库基于RSA256算法生成JWT

    JWT简介 JWT(Json web token),是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准.JWT提供了一种简单.安全的身份认证方法,特别适合分布式站点单点登录.或者是签名. ...

  2. 解锁Nginx日志的宝藏:GoAccess——你的实时、交互式Web日志分析神器!

    在当今数字化的时代,网站的流量和用户行为数据就像是一座蕴藏着无尽秘密的宝藏.而如何有效地挖掘和分析这些数据,成为了许多网站管理者和开发者头疼的问题.GoAccess,一款开源的实时Web日志分析工具, ...

  3. Scratch源码下载 | 3D钻石

    程序说明: <3D钻石>是一个利用Scratch平台创作的独特艺术作品.此程序在屏幕上呈现一个精致的3D钻石模型,允许用户通过鼠标操作来旋转和查看钻石的不同角度.该程序还提供了修改钻石参数 ...

  4. Codeforces Round 947 (Div. 1 + Div. 2) A~H

    Codeforces Round 947 (Div. 1 + Div. 2) A 模拟. B 最小的 \(a\) 肯定作为 \(i\).对于不被 \(i\) 整除的,最小的那个作为 \(j\),判断是 ...

  5. uniapp生成的app怎么上架到iphone的app store

    首先这里需要强调的是,上架app store,必须用自己公司的账号的证书打包,不能使用别的公司的证书打包,因为假如使用别人的证书打包,打包出来的app,只能上传到别人的app store账号,你开发的 ...

  6. 自写Json转换工具

    前面写了简单的API测试工具ApiTools,返回的json有时需要做很多转换,于是开发了这个工具. 功能包括 1.json字符串转为表格,可以直观的展示,也可以复制,并支持转换后的表格点击列头进行排 ...

  7. FP分数规划在无线通信中的应用

    更多精彩内容请关注微信公众号 '优化与算法' 前言 在数学优化中,分数规划是线性分式规划的推广.分数规划中的目标函数是两个函数的比值,这两个函数通常是非线性的.要优化的比值通常描述系统的某种效率. 1 ...

  8. [银河麒麟] Samba的安装与配置

    什么是Samba以及它是干嘛的 Samba,是种用来让UNIX系列的操作系统与微软Windows操作系统的SMB/CIFS(Server Message Block/Common Internet F ...

  9. 元学习的经典文献:S. Thrun - 1998 - LEARNING TO LEARN: INTRODUCTION AND OVERVIEW

    地址: https://link.springer.com/chapter/10.1007/978-1-4615-5529-2_1

  10. 惠普暗影精灵2pro挑电池和电源适配器

    自己几年前买的暗影2pro前几个月坏掉了,无法充电,而且偶发性掉电,经过长时间研究发现该款电脑存在挑电池和电源适配器的问题. 相关资料: https://www.chinafix.com/thread ...