MyBatisPlus之DQL编程控制


🐌个人主页: 🐌 叶落闲庭

💨我的专栏:💨
c语言
数据结构
javaEE
操作系统

石可破也,而不可夺坚;丹可磨也,而不可夺赤。


MyBatisPlus之DQL编程控制

  • [一、 条件查询方式(三种格式)](#一、 条件查询方式(三种格式))
  • [二、 条件查询 -- -- null值处理](#二、 条件查询 -- -- null值处理)
    • [2.1 if语句控制追加](#2.1 if语句控制追加)
    • [2.2 条件参数控制](#2.2 条件参数控制)
    • [2.3 条件参数控制(链式编程)](#2.3 条件参数控制(链式编程))
  • 三、查询投影
    • [3.1 查询结果包含模型类中部分属性](#3.1 查询结果包含模型类中部分属性)
    • [3.2 查询结果包含模型类中未定义的属性](#3.2 查询结果包含模型类中未定义的属性)

一、 条件查询方式(三种格式)

  • MyBatisPlus将书写复杂的SQL查询条件进行了封装,使用编程的形式完成查询条件的组合
  • 格式一:常规格式
java 复制代码
		//方式一:按条件查询
		QueryWrapper qw = new QueryWrapper();
		//小于3
		qw.lt("id",3);
		List userList = userDao.selectList(qw);
		System.out.println(userList);
  • 格式二:链式编程查询
java 复制代码
		QueryWrapper qw = new QueryWrapper();
		//小于3大于1
		qw.lt("id",3).gt("id",1);
		List userList = userDao.selectList(qw);
		System.out.println(userList);
  • 格式三:lambda格式(推荐)
java 复制代码
		//方式三:lambda格式按条件查询
		LambdaQueryWrapper<User> lwq = new LambdaQueryWrapper<>();
		//id为1到3之间
		lwq.lt(User::getId,3);
		lwq.gt(User::getId,1);
		//id为小于2或者大于3
		//链式查询
		lwq.lt(User::getId,2).or().gt(User::getId,3);
		List userList = userDao.selectList(lwq);
		System.out.println(userList);
  • 并且:
java 复制代码
qw.lt("id",3).gt("id",1);
  • 或者:
java 复制代码
lwq.lt(User::getId,2).or().gt(User::getId,3);

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

2.1 if语句控制追加

java 复制代码
		UserQuery uq = new UserQuery();
		uq.setId(1);
		uq.setId2(3);
		//null判定
		LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>();
		if(null != uq.getId()) {
			lqw.lt(User::getId,uq.getId2());
		}
		if(null != uq.getId2()) {
			lqw.gt(User::getId,uq.getId());
		}
		List<User> userList = userDao.selectList(lqw);
		System.out.println(userList);

2.2 条件参数控制

java 复制代码
		//先判定第一个参数是否为true,如果为true,连接当前条件
		UserQuery uq = new UserQuery();
		uq.setId(1);
		uq.setId2(3);
		//null判定
		LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>();
		lqw.gt(null!=uq.getId2(), User::getId, uq.getId())
		lqw.lt(null!= uq.getId(),User::getId,uq.getId2());
		List<User> userList = userDao.selectList(lqw);
		System.out.println(userList);

2.3 条件参数控制(链式编程)

java 复制代码
		//先判定第一个参数是否为true,如果为true,连接当前条件
		UserQuery uq = new UserQuery();
		uq.setId(1);
		uq.setId2(3);
		//null判定
		LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>();
		lqw.gt(null!=uq.getId2(), User::getId, uq.getId())
					.lt(null!= uq.getId(),User::getId,uq.getId2());
		List<User> userList = userDao.selectList(lqw);
		System.out.println(userList);

三、查询投影

3.1 查询结果包含模型类中部分属性

java 复制代码
		LambdaQueryWrapper<User> lqw = new LambdaQueryWrapper<>();
		lqw.select(User::getId,User::getAddr);
		List<User> userList = userDao.selectList(lqw);
		System.out.println(userList);

3.2 查询结果包含模型类中未定义的属性

java 复制代码
		QueryWrapper<User> qw = new QueryWrapper<>();
		qw.select("count(*) as count");
		qw.groupBy("gender");
		List<Map<String, Object>> userList = userDao.selectMaps(qw);
		System.out.println(userList);
相关推荐
2301_803875611 小时前
PHP 中处理会话数组时的类型错误解析与修复指南
jvm·数据库·python
m0_743623921 小时前
c++如何批量修改文件后缀名_std--filesystem--replace_extension【实战】
jvm·数据库·python
2401_873479401 小时前
如何利用IP查询定位识别电商刷单?4个关键指标+工具配置方案
开发语言·tcp/ip·php
我爱cope2 小时前
【从0开始学设计模式-10| 装饰模式】
java·开发语言·设计模式
2501_914245932 小时前
CSS如何处理CSS变量作用域冲突_利用特定类名重写变量值
jvm·数据库·python
菜鸟学Python2 小时前
Python生态在悄悄改变:FastAPI全面反超,Django和Flask还行吗?
开发语言·python·django·flask·fastapi
<-->2 小时前
Megatron(全称 Megatron-LM,由 NVIDIA 开发)和 DeepSpeed(由 Microsoft 开发)
人工智能·pytorch·python·深度学习·transformer
测试19983 小时前
2026最新软件测试面试八股文【附文档】
自动化测试·软件测试·python·测试工具·面试·职场和发展·测试用例
浪浪小洋3 小时前
c++ qt课设定制
开发语言·c++
charlie1145141913 小时前
嵌入式C++工程实践第16篇:第四次重构 —— LED模板,从通用GPIO到专用抽象
c语言·开发语言·c++·驱动开发·嵌入式硬件·重构