MyBatisPlus——DQL编程控制——条件查询
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编程控制——条件查询的更多相关文章
- Java开发学习(四十二)----MyBatisPlus查询语句之条件查询
一.条件查询的类 MyBatisPlus将书写复杂的SQL查询条件进行了封装,使用编程的形式完成查询条件的组合. 这个我们在前面都有见过,比如查询所有和分页查询的时候,都有看到过一个Wrapper类, ...
- 【mybatis-plus】条件查询
用mp也可以方便的实现稍复杂点的条件查询,当然了很复杂的就还是要xml编写sql了. 一.wapper介绍 先看下mp的条件构造抽象类的结构: Wrapper: 条件构造抽象类,最顶端父类 Abstr ...
- DQL基础查询和DQL条件查询
DQL:查询表中的记录 1.语法 select 字段列表 from 表名列表 where 条件列表 group by 分组字段 having 分组之后的条件 order by 排序 limit 分页限 ...
- MySQL(四)DQL语言——条件查询
摘要:条件查询:条件表达式,逻辑表达式,模糊查询,like,通配符,转义字符,escape关键字,between and,in,is null,is not null,安全等于. 条件查询语法: SE ...
- SQL语言学习-DQL条件查询
条件查询 1. where子句后跟条件 2. 运算符 * > .< .<= .>= .= .<> * BETWEEN...AND * IN( 集合) * LIKE: ...
- HBase高性能复杂条件查询引擎
转自:http://blog.csdn.net/bluishglc/article/details/31799255 mark 写在前面 本文2014年7月份发表于InfoQ,HBase的PMC成员T ...
- MyBatisPlus---DQL编程控制
MP将书写复杂的SQL查询条件进行了封装,使用编程的形式完成查询条件的组合. 一.条件查询 package com.itheima; import com.baomidou.mybatisplus.c ...
- mongodb_查询操作使用_条件查询、where子句等(转)
<?php /* mongodb_查询操作使用_条件查询.where子句等(转并学习) 1.find()/findOne() mongodb数据库的查询操作即使用find()或者findO ...
- SQL编程之高级查询(子查询)以及注意事项
SQL编程之高级查询(子查询)以及注意事项 1.什么是子查询? 当一个查询是另一个查询的条件时,称之为子查询.子查询可以使用几个简单命令构造功能强大的复合命令.子查询最常用于SELECT-SQL命 ...
- 动态多条件查询分页以及排序(一)--MVC与Entity Framework版url分页版
一.前言 多条件查询分页以及排序 每个系统里都会有这个的代码 做好这块 可以大大提高开发效率 所以博主分享下自己的6个版本的 多条件查询分页以及排序 二.目前状况 不论是ado.net 还是EF ...
随机推荐
- [oeasy]python0074_修改字体背景颜色_background_color_背景色
修改背景色 回忆上次内容 上次将asciiart和颜色一起来玩 7 种基本色 变化多端 不过到目前为止 改的 都是前景色 背景色可以修改吗? 重温参数 具体动手试试 print("\033[ ...
- [oeasy]python0020换行字符_feed_line_lf_反斜杠n_B语言_安徒生童话
换行字符 回忆上次内容 struct包可以让我们使用封包格式 把数字封包到字节里 pack函数负责封包 unpack函数负责解封 我们通过封到不同的字节状态 遍历了一次ascii码 编辑 还是 ...
- CF1468N 题解
洛谷链接&CF 链接 题目简述 共有 \(T\) 组数据,对于每组数据: 有三个桶,五种垃圾,每个桶有固定的容量. 前三种垃圾分别放入三种桶中,第四种垃圾可以放进 \(1,3\) 桶中,第五种 ...
- 5/15课下作业:评价一下steam软件
用户界面: 登录后会弹出特惠广告,广告内容可能不常用.主界面简洁方便,启动游戏,购买游戏,浏览社区,浏览自己内容一目了然 记住用户选择: 登录一次后会记住用户的账户密码,可以直接进行用户间的切换,会记 ...
- docker nginx容器的均衡负载
创建三个docker容器以实现nginx的负载均衡 编写nginx的dockfile [root@docker nginx]# cat Dockerfile FROM nginx RUN echo ' ...
- Spring AOP概念及原理
Spring AOP(面向切面编程) 以下内容由ChatGPT生成 AOP(Aspect-Oriented Programming,面向切面编程)是一种编程范式,旨在通过分离关注点来提高程序的模块化. ...
- 【Java】Jsoup 解析HTML报告
一.需求背景 有好几种报告文件,目前是人肉找报告信息填到Excel上生成统计信息 跟用户交流了下需求和提供的几个文件,发现都是html文件 其实所谓的报告的文件,就是一些本地可打开的静态资源,里面也有 ...
- 【BatchProgram】工作用的小工具 - 自动访问常用页面
需求: 我需要打开很多页面,但是忘了收藏的话,每次都要重新去找一遍打开 页面很多,不是一两个了,为什么这么多?因为开发情况就是这样啊: 正式生产一个页面,UAT测试一个页面,本地调试一个页面 每日工作 ...
- CryptoHouse:由 ClickHouse 和 Goldsky 支持的免费区块链分析服务(ClickHouse 博客)
我们很高兴地宣布 CryptoHouse,在 crypto.clickhouse.com 上可访问,这是一个由 ClickHouse 提供支持的免费区块链分析服务. https://crypto.cl ...
- 使用sl+tmux哇娃
0x01 背景 2岁多的小娃不肯刷牙,有时看故事书时会配合刷一会儿,但偶尔也不好使.突然想到TA,之前在电脑桌旁边捣乱时,给ta看过console中的小火车,ubuntu中安装sl命令后就可以看到,用 ...