当前位置: 首页 > news >正文

Mybatis-plus动态条件查询QueryWrapper的使用

Mybatis-plus动态条件查询QueryWrapper的使用

一:queryWrapper介绍

queryWrapper是mybatis plus中实现查询的对象封装操作类,可以封装sql对象,包括where条件,order by排序,select哪些字段等等,他的层级关系如下图:

Wrapper:条件构造抽象类,最顶端父类;
AbstractWrapper:用于查询条件封装,生成sql的where条件;
AbstractLambdaWrapper:Lambda语法使用Wrapper统一处理解析lambda获取column。
LambdaQueryWrapper:用于lambda语法使用的查询Wrapper;
LambdaUpdateWrapper:Lambda更新封装Wrapper;
QueryWrapper:Entity对象封装操作类,不是用lambda;
UpdateWrapper:Update条件封装,用于Entity对象更新操作。

在这里插入图片描述

二:queryWrapper示例

2.1-案例一:根据name模糊查看未删除的用户列表信息

过滤条件:

name 用户名称 ,模糊查看
del_flag = 0
按照create_time创建时间降序
sql实现:select * from t_user
where del_flag = 0
<if test ="name!=null and ''!=name">and name like concat('%',#{name},'%')
</if>
order by create_time desc

queryWrapper实现:

/*** 案例一:根据name模糊查看未删除的用户列表信息* @param name* @return*/
@RequestMapping("/list")
public Map<String,Object> getList(@RequestParam String name){Map<String,Object> result = new HashMap<>();//构建一个查询的wrapperQueryWrapper<User> wrapper = new QueryWrapper<User>();//name不为空时,组装模糊查询条件wrapper.like(StringUtils.isNotBlank(name),"name",name);//未删除wrapper.eq("del_flag",0);//创建时间降序wrapper.orderByDesc("create_time");List<User> list = userMapper.selectList(wrapper);result.put("data",list);return result;
}

2.2-案例二:查看姓李的并且邮箱不为空的用户列表

sql实现:

select * from t_user
where del_flag = 0
and name like concat('李','%')
and email is not null
order by create_time desc

queryWrapper实现:

/*** 案例二:查看姓张的并且邮箱不为空的用户列表* @return*/
@RequestMapping("/list2")
public Map<String,Object> getList2(){Map<String,Object> result = new HashMap<>();//构建一个查询的wrapperQueryWrapper<User> wrapper = new QueryWrapper<User>();//姓张的wrapper.likeRight("name","张");//邮箱不为空wrapper.isNotNull("email");//未删除wrapper.eq("del_flag",0);//创建时间降序wrapper.orderByDesc("create_time");List<User> list = userMapper.selectList(wrapper);result.put("data",list);return result;
}

2.3-案例三:年龄范围查询(20-30之间的)

sql实现:

select * from t_user
where del_flag=0
and age between 20 and 30
order by create_time desc

queryWrapper实现:

/*** 案例三:年龄范围查询(20-30之间的)* @return*/
@RequestMapping("/list3")
public Map<String,Object> getList3(){Map<String,Object> result = new HashMap<>();//构建一个查询的wrapperQueryWrapper<User> wrapper = new QueryWrapper<User>();//年龄20-30之间的wrapper.between("age",20,30);//未删除wrapper.eq("del_flag",0);//创建时间降序wrapper.orderByDesc("create_time");List<User> list = userMapper.selectList(wrapper);result.put("data",list);return result;
}
http://www.lryc.cn/news/120074.html

相关文章:

  • Redis安装配置远程连接
  • pycharm中配置conda
  • matlab解常微分方程常用数值解法1:前向欧拉法和改进的欧拉法
  • SQL | 计算字段
  • leetcode做题笔记67
  • fastadmin 自定义搜索分类和时间范围
  • Oracle Data Redaction与Data Pump
  • 设计模式(6)原型模式
  • pywinauto结合selenium实现文件上传
  • 【Java多线程学习7】Java线程池技术
  • VMware虚拟机NAT模式Ubuntu无法上网解决方案
  • Linux中无法忘记mysql密码处理办法
  • vue 使用 el-upload 上传文件(自动上传/手动上传)
  • 服务器遭受攻击之后的常见思路
  • C语言学习笔记 使用vscode外部console出现闪退-12
  • 从Spring源码看Spring如何解决循环引用的问题
  • 03 - 通过git log可以查看版本演变历史
  • 【图论】单源最短路
  • 闻道网络:2023宠物消费网络营销洞察数据报告(附下载)
  • Docker 安装和架构说明
  • 101. 对称二叉树
  • cmake应用:集成gtest进行单元测试
  • 静态时序分析与时序约束
  • YOLOv5基础知识入门(3)— 目标检测相关知识点
  • 10个AI绘图生成器让绘画更简单
  • 干货满满的Python知识,学会这些你也能成为大牛
  • 【Leetcode】155. 最小栈、JZ31 栈的压入、弹出序列
  • 网络安全(黑客技术)自学笔记
  • iOS学习—制作全局遮罩
  • GRPC-连接池-GPT