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. SourceInsight4破解

    2017/10/18 更新 1. 安装原版软件:Source Insight Version 4.0.0092 -  March 20, 2018 2. 下载激活程序:sourceinsight_40 ...

  2. 浏览器F12,Network中各按钮的作用

    Network下 preserve log:勾选,页面发生跳转,接口不丢失:(比如登录成功跳转到首页,登录的接口就没了,勾选Perserve log,会记录跳转前的接口): Disable cache ...

  3. 北大2022编译原理实践(C/C++)-sysy 编译器构建

    这是今年新推出的实践方案,由往年的sysy->IR1->IR2->RISC V变成了sysy->Koopa->RISC V,通过增量的方式让整个实践过程更容易上手 所以先 ...

  4. PSPNet 代码分析

    https://www.lmlphp.com/user/62501/article/item/1225624/ train.py 网络训练主函数,主要操作有: 传入训练参数:通常采用argparse库 ...

  5. web自动化测试python+selenium----API

    import time from selenium import webdriver # 启动谷歌浏览器,开启与浏览器之间的会话 driver = webdriver.Chrome() # 访问一个网 ...

  6. react+antd 导出excel文件(简单数据&多级表头)

    需求: 在基于react+antd进行开发的页面中,实现导出excel报表的功能 实际场景: 1.简单数据:单层表头+数据 2.复杂数据:多层表头+数据 实现方式: 1.简单数据 简单数据的导出使用了 ...

  7. C的基础常识

    C是可移植性语言,因此可以在许多环境中使用,包括UNIX.Linux.MS-DOS.Windows和Macintosh OS. 使用C语言编写的内容的文本,称为源代码文件(source code fi ...

  8. 在脚手架中使用React

    1.导入react 和react-dom 两包 import React from 'react' import ReactDOM from 'react-dom' 2.调用React.createE ...

  9. 用shell开火车哈哈

    用shell开火车!(σ゚∀゚)σ⁶⁶⁶⁶⁶⁶⁶⁶⁶⁶ while true; do sl -aFile; done 这个效果更佳

  10. 使用Microsoft Network Monitor 抓包分析文件上传

    Microsoft 自己提供了一个官方的抓包工具,可以比较方便的在windows平台抓包,并可以提供协议关键字正则.安装包位置:\\192.168.10.248\public\ghw\tools\MN ...