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. Windows 分层窗口 桌面上透明 Direct3D

    Windows 分层窗口 桌面上透明 Direct3D 1 //IDirect3DSurface9 GetDC UpdateLayeredWindow 2 3 #include <Windows ...

  2. 「SOL」Hamiltonian Cycle (AtCoder)

    原来一般的四度图也没法快速构造哈密顿回路 QwQ # 题面 给定质数 \(P\) 和正整数 \(a,b\),构造一个长为 \(P\) 的数列 \(G=(g_1,g_2,\dots,g_P)\),满足: ...

  3. Typora初学

    Markdown学习 TYPORA操作 Ctrl+Home 返回Typora顶部 Ctrl+End 返回Typora底部 Ctrl+T 创建表格 Ctrl+H 搜索并替换 Ctrl+Shift+M 公 ...

  4. oracle SDO_ORDINATE_ARRAY直接展示

    mdsys.sdo_geometry 中SDO_ORDINATE存储的是空间对象的几何节点坐标序列,要想直接展示第一条值出来需要捞出数据 若select t.id,t.shape.sdo_ordina ...

  5. php后端遇到的问题

    1.用文件记录日志,会有并发问题

  6. c++ 保存txt文件

    #include <iostream> #include <stdio.h> #include <fstream> #include <queue> # ...

  7. PVE设置硬盘休眠并解决经常唤醒问题

    查询硬盘编号: ls -l /dev/disk/by-id/ 查询硬盘状态: smartctl -i -n standby /dev/sda |grep "mode"|awk '{ ...

  8. springboot 项目启动后访问不论什么请求的是spring的注册页面Please sign in Username || springboot禁用security

    解决方法: 1.在启动类上添加注解@EnableAutoConfiguration(exclude = {SecurityAutoConfiguration.class}) 2.或者:@SpringB ...

  9. Redis5.0.4-集群(单机版)搭建

    最近尝试搭建了一下redis集群,这里记录一下,最后附上的是参考的博客地址. 安装C语言编译环境GCC yum install -y gcc-c++ 下载redis并编译安装 下载: wget htt ...

  10. 2020.6.6OO学期末总结

    0.前言 本次博客是对整个java及oo学习情况的一个概略性总结,目的在于反思这半年来的学习情况和实际感受,和具体学习方面的理解和问题. 1.作业过程总结 看着自己一个学期做的所有作业,我想起的是总是 ...