MP将书写复杂的SQL查询条件进行了封装,使用编程的形式完成查询条件的组合。

一、条件查询

package com.itheima;

import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.itheima.dao.UserDao;
import com.itheima.domain.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest; import java.util.List; @SpringBootTest
class Mybatisplus02DqlApplicationTests { @Autowired
private UserDao userDao; @Test
void testGetAll() { //方式一:查询age字段小于18。
// QueryWrapper qw = new QueryWrapper();
// qw.lt("age", 18);
// List<User> users = userDao.selectList(qw);
// System.out.println(users); //方式二:lambda格式查询age字段小于18
// QueryWrapper<User> qw = new QueryWrapper();
// qw.lambda().lt(User::getAge, 18);
// List<User> users = userDao.selectList(qw);
// System.out.println(users); //方式三:lambda格式查询age字段小于18
// LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
// lqw.lt(User::getAge, 18);
// List<User> users = userDao.selectList(lqw);
// System.out.println(users); // lambda格式多条件查询age字段小于(lt)18, 大于(gt)5
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
//5到18岁之间:链式编程
// lqw.lt(User::getAge, 18);
// lqw.gt(User::getAge, 5);
// lqw.lt(User::getAge, 18).gt(User::getAge, 5); //小于5岁,或者大于18岁
lqw.lt(User::getAge, 5).or().gt(User::getAge, 18);
List<User> users = userDao.selectList(lqw);
System.out.println(users); } }

二、条件查询--null值处理

//模拟页面传递过来的查询数据
UserQuery uq = new UserQuery();
// uq.setAge(10);
uq.setAge2(30); //null判定
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
// lqw.lt(User::getAge, uq.getAge2());
//先判定第一个参数是否为true,如果为true连接当前条件
lqw.lt(uq.getAge2()!=null, User::getAge, uq.getAge2());
// lqw.gt(User::getAge, uq.getAge());
lqw.gt(uq.getAge()!=null, User::getAge, uq.getAge()); List<User> users = userDao.selectList(lqw);
System.out.println(users);

三、查询投影

 //查询投影
// LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
// lqw.select(User::getId, User::getName, User::getAge);
// QueryWrapper<User> lqw = new QueryWrapper<User>();
// lqw.select("id", "name", "age", "tel");
// List<User> users = userDao.selectList(lqw);
// System.out.println(users); //查所有,分组查询
QueryWrapper<User> lqw = new QueryWrapper<User>();
lqw.select("count(*) as count, tel");
lqw.groupBy("tel");
List<Map<String, Object>> userList = userDao.selectMaps(lqw);
System.out.println(userList);
//条件查询
//查询name为Jerry、密码为jerry的用户是否存在
// LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
// lqw.eq(User::getName, "Jerry").eq(User::getPassword, "jerry");
// User user = userDao.selectOne(lqw);
// System.out.println(user); //范围查询 lt(<) le(<=) gt()> ge(>=) eq(==) between
// LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
// lqw.between(User::getAge, 10, 30);
// List<User> users = userDao.selectList(lqw);
// System.out.println(users); //模糊匹配
LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<User>();
//likeLeft: "%J" likeRight: "J%"
lqw.likeLeft(User::getName, "J");
List<User> users = userDao.selectList(lqw);
System.out.println(users);

MyBatisPlus---DQL编程控制的更多相关文章

  1. Delphi - 利用DLL编程控制摄像头实现拍照、录制视频

    Delphi利用avicap32.dll编程控制摄像头实现拍照.录制视频 项目需求:平板电脑(Windows系统)一维/二维码扫描功能: 需求分析: 需要扫描一维/二维码时,分两步实现. 第一步,av ...

  2. [C#] 编程控制笔记本蓝牙与外部蓝牙设备通信

    一.蓝牙模块XLBT232‐D01介绍(外部设备蓝牙) 1.1.蓝牙模块简介 XLBT232-D0101蓝牙模块采用CSR BlueCore 芯片,配置6-8Mbit 的软件存储空间, 支持AT 指令 ...

  3. 利用Delphi编程控制摄像头(图)

    你的电脑有没有摄像头?看到别人用QQ玩视屏你会不会去想怎么实现的?这里介绍使用DELPHI使用MS的 AVICAP32.DLL就可轻松的实现对摄像头编程,如果再加上你的网络编程水平,实现一个视屏聊天就 ...

  4. Shell编程—控制脚本

    1处理信号 1.1信号表 编号 信号名称 缺省操作 解释 1 SIGHUP Terminate 挂起控制终端或进程 2 SIGINT Terminate 来自键盘的中断 3 SIGQUIT Dump ...

  5. Team Foundation API - 编程控制文件版本

    Team Foundation Server (TFS)工具的亮点之一是文件的版本控制.在TFS中实现文件版本控制的类型: Microsoft.TeamFoundation.Client.TfsTea ...

  6. 一篇文章带你掌握MyBatis简化框架——MyBatisPlus

    一篇文章带你掌握MyBatis简化框架--MyBatisPlus 我们在前面的文章中已经学习了目前开发所需的主流框架 类似于我们所学习的SpringBoot框架用于简化Spring开发,我们的国人大大 ...

  7. CAN总线简介:如何以编程方式控制汽车

    最近,我正与Voyage公司的朋友合作研究,以实现福特Fusion空调系统(A/C)的编程控制.目前,Voyage公司正努力打造自动驾驶的终极目标:能够以低廉的价格成本和广泛的投放范围,把世界任何地方 ...

  8. 单片机与控制实验(2)——LED点阵显示屏

    一.实验目的和要求 了解LED点阵显示的基本原理和实现方法.掌握点阵汉字库的编码和从标准字库中提取汉字编码的方法. 二.实验设备 单片机测控实验系统 LED点阵显示器实验模块 Keil开发环境 STC ...

  9. Dom编程

    Dom编程 Dom是一种用于HTML和XML文档的编程接口,是HTML页面的模型,将每个标签都做为一个对象,JavaScript通过调用DOM中的属性.方法就可以对网页中的文本框.层等元素进行编程控制 ...

  10. 如何为编程爱好者设计一款好玩的智能硬件(八)——LCD1602点阵字符型液晶显示模块驱动封装(中)

    六.温湿度传感器DHT11驱动封装(下):如何为编程爱好者设计一款好玩的智能硬件(六)——初尝试·把温湿度给收集了(下)! 七.点阵字符型液晶显示模块LCD1602驱动封装(上):如何为编程爱好者设计 ...

随机推荐

  1. Linux 上安装 jmeter

    Linux 下安装 Jmeter,要求先要安装 1.6 版本以上的jdk.所以先说明怎样安装jdk和配置环境变量,本文介绍的是.tar.gz版本的jdk安装. 1.首先在windows上,到官网:ht ...

  2. 重写react-navigation的stackNaviagtor产生的默认导航栏header样式

    主要是默认的stackNavigator产生的效果,很难看 重写这个阴影,在当前路由配置的 navigationOptions里的 headerStyle写样式 navigationOptions:{ ...

  3. .NET Core使用 Coravel 实现任务调度

    前言 前段时间需要在一个新项目里添加两个后台任务,去定时请求两个供应商的API来同步数据:由于项目本身只是一个很小的服务,不太希望引入太重的框架,同时也没持久化要求:于是我开始寻找在Quartz.Ne ...

  4. labuladong数据结构

    缓存淘汰算法:LRU①.LFU② BST③ 完全二叉树④ 序列化和反序列化二叉树⑤ 最近公共祖先⑥ 单调栈⑦ 单调队列⑧ 递归反转链表⑨ k个一组反转链表

  5. ELK收集njinx

    前提:安装elk 1.yum安装nginx 2.修改配置文件 vim /etc/nginx/nginx.conf.d 3.重新启动 nginx -s reload 4.安装压测命令 压测文件 5.写完 ...

  6. Edge浏览器相关

    Ctrl+T 新建页面 Ctrl+W 关闭页面 不可复制的页面,前加read: 若是不可访问 变read://http:// 阅读可翻译,也可有图片字典 还可用插件: 截图软件:Snipaste  微 ...

  7. You Don't Know JS阅读笔记

    JS特性查漏补缺 [1,2,3]=="1,2,3" //true 前者会隐式转换,用逗号组合成字符串 212>'22' //true 有一个值不是number就会隐式转换成n ...

  8. 【python】第二模块 步骤一 第二课、数据库表的相关操作

    第二课.数据库表的相关操作 一.课程介绍 1.1 课程介绍 学习目标 管理逻辑库和数据表 创建.删除.修改逻辑库和数据表 了解常用的数据类型和约束 字符串.整数.浮点数.精确数字.日期.枚举.主要约束 ...

  9. Derivative of the Sigmoid function

    一个详细介绍怎么推导Derivative of the Sigmoid function的文章- https://towardsdatascience.com/derivative-of-the-si ...

  10. typora基础语法

    Markdown学习 标题 三级标题 #加空格加你要的文字 字体 加粗 hello world!(前后两个**) hello world!(前后一个**) hello world!(前后三个***) ...