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

QueryWrapper中的or和and

QueryWrapper<Entity> queryWrapper=new QueryWrapper<>();
queryWrapper.lt()——小于
queryWrapper.le()——小于等于
queryWrapper.gt()——大于
queryWrapper.ge()——大于等于
queryWrapper.eq()——等于
queryWrapper.ne()——不等于
queryWrapper.betweeen(“age”,10,20)——age在值10到20之间
queryWrapper.notBetweeen(“age”,10,20)——age不在值10到20之间
queryWrapper.like(“属性”,“值”)——模糊查询匹配值‘%值%’
queryWrapper.notLike(“属性”,“值”)——模糊查询不匹配值‘%值%’
queryWrapper.likeLeft(“属性”,“值”)——模糊查询匹配最后一位值‘%值’
queryWrapper.likeRight(“属性”,“值”)——模糊查询匹配第一位值‘值%’
queryWrapper.isNull()——值为空或null
queryWrapper.isNotNull()——值不为空或null
queryWrapper.in(“属性”,条件,条件 )——符合多个条件的值
queryWrapper.notIn(“属性”,条件,条件 )——不符合多个条件的值
queryWrapper.or()——或者
queryWrapper.and()——和
queryWrapper.orderByAsc(“属性”)——根据属性升序排序
queryWrapper.orderByDesc(“属性”)——根据属性降序排序
queryWrapper.inSql(“sql语句”)——符合sql语句的值
queryWrapper.notSql(“sql语句”)——不符合SQL语句的值
queryWrapper.esists(“SQL语句”)——查询符合SQL语句的值
queryWrapper.notEsists(“SQL语句”)——查询不符合SQL语句的值来源:https://blog.csdn.net/u012660464/article/details/132357205

ChatGPT生成:

  1. eq(等于)
    • 用法:eq(String column, Object val)
    • 说明:字段等于某个值,相当于 SQL 中的 =
    • 示例:queryWrapper.eq("name", "John"); 生成 SQL 片段:name = 'John'
  1. ne(不等于)
    • 用法:ne(String column, Object val)
    • 说明:字段不等于某个值,相当于 SQL 中的 <>!=
    • 示例:queryWrapper.ne("age", 18); 生成 SQL 片段:age <> 18
  1. gt(大于)
    • 用法:gt(String column, Object val)
    • 说明:字段大于某个值,相当于 SQL 中的 >
    • 示例:queryWrapper.gt("age", 18); 生成 SQL 片段:age > 18
  1. ge(大于等于)
    • 用法:ge(String column, Object val)
    • 说明:字段大于等于某个值,相当于 SQL 中的 >=
    • 示例:queryWrapper.ge("id", 100); 生成 SQL 片段:id >= 100
  1. lt(小于)
    • 用法:lt(String column, Object val)
    • 说明:字段小于某个值,相当于 SQL 中的 <
    • 示例:queryWrapper.lt("score", 60); 生成 SQL 片段:score < 60
  1. le(小于等于)
    • 用法:le(String column, Object val)
    • 说明:字段小于等于某个值,相当于 SQL 中的 <=
    • 示例:queryWrapper.le("age", 30); 生成 SQL 片段:age <= 30
  1. like(模糊查询)
    • 用法:like(String column, Object val)
    • 说明:字段进行模糊查询,相当于 SQL 中的 LIKE。默认是前面加 %
    • 示例:queryWrapper.like("name", "J"); 生成 SQL 片段:name LIKE '%J%'(注意:具体行为可能因 MyBatis-Plus 版本而异,有些版本可能需要指定前后通配符)
  1. notLike(不模糊查询)
    • 用法:notLike(String column, Object val)
    • 说明:字段不进行模糊查询,即不匹配某个模糊值。
    • 示例:queryWrapper.notLike("name", "J"); 生成 SQL 片段:name NOT LIKE '%J%'
  1. in(在范围内)
    • 用法:in(String column, Collection<?> value)
    • 说明:字段值在给定集合中,相当于 SQL 中的 IN
    • 示例:queryWrapper.in("id", Arrays.asList(1, 2, 3)); 生成 SQL 片段:id IN (1, 2, 3)
  1. notIn(不在范围内)
    • 用法:notIn(String column, Collection<?> value)
    • 说明:字段值不在给定集合中,相当于 SQL 中的 NOT IN
    • 示例:queryWrapper.notIn("id", Arrays.asList(1, 2, 3)); 生成 SQL 片段:id NOT IN (1, 2, 3)
  1. isNull(为 null)
    • 用法:isNull(String column)
    • 说明:字段值为 null。
    • 示例:queryWrapper.isNull("email"); 生成 SQL 片段:email IS NULL
  1. isNotNull(不为 null)
    • 用法:isNotNull(String column)
    • 说明:字段值不为 null,相当于 SQL 中的 IS NOT NULL
    • 示例:queryWrapper.isNotNull("email"); 生成 SQL 片段:email IS NOT NULL
  1. between(在范围内)
    • 用法:between(String column, Object val1, Object val2)
    • 说明:字段值在给定范围内(包含边界值),相当于 SQL 中的 BETWEEN ... AND ...
    • 示例:queryWrapper.between("age", 18, 30); 生成 SQL 片段:age BETWEEN 18 AND 30
  1. notBetween(不在范围内)
    • 用法:notBetween(String column, Object val1, Object val2)
    • 说明:字段值不在给定范围内(不包含边界值),相当于 SQL 中的 NOT BETWEEN ... AND ...
    • 示例:queryWrapper.notBetween("age", 18, 30); 生成 SQL 片段:age NOT BETWEEN 18 AND 30
  1. groupBy(分组)
    • 用法:groupBy(String... columns)
    • 说明:根据一个或多个字段进行分组,相当于 SQL 中的 GROUP BY
    • 示例:queryWrapper.groupBy("category_id", "year"); 生成 SQL 片段:GROUP BY category_id, year
  1. orderByAsc(升序排序)orderByDesc(降序排序)
    • 用法:orderByAsc(String... columns)orderByDesc(String... columns)
    • 说明:根据一个或多个字段进行升序或降序排序,相当于 SQL 中的 ORDER BY ... ASCORDER BY ... DESC
    • 示例:queryWrapper.orderByAsc("age", "name"); 生成 SQL 片段:ORDER BY age ASC, name ASC
  1. having(条件过滤)
    • 用法:having(String sqlHaving, Object... params)
    • 说明:添加 HAVING 条件,通常与 groupBy 一起使用,对分组后的结果进行过滤。
    • 示例:queryWrapper.groupBy("category_id").having("SUM(sales) > 1000"); 注意:这里的 having 方法可能需要与 SQL 片段结合使用,因为直接传递字符串可能导致 SQL 注入风险,所以最好使用 Func 等安全的方式来构建复杂的条件。
  1. nested(嵌套条件)
    • 用法:nested(Consumer<QueryWrapper<T>> consumer)
    • 说明:嵌套查询条件,可以在嵌套内部继续使用 QueryWrapper 的方法来构建更复杂的查询条件。
    • 示例:queryWrapper.nested(wrapper -> wrapper.eq("status", "active").gt("score", 80)); 这将构建一个嵌套的查询条件,首先要求 statusactive,然后要求 score 大于 80。
  1. or and(逻辑连接)
    • MyBatis-Plus 的 QueryWrapper 实际上是通过链式调用隐式地处理 ANDOR 逻辑的,但有时候你可能需要显式地控制它们。虽然 QueryWrapper 本身不直接提供 or()and() 方法(这些方法通常用于构建更复杂的表达式时结合 nested() 使用),但你可以通过链式调用的方式自然地构建出包含 ANDOR 逻辑的查询条件。

但是在实际应用中,假如说,你前面有两个查询条件是 eq,第三个用了 ge 和 le 查询某个时间范围内的数据,而第四个查询继续使用了 eq,那么就会出现这样的问题:

只要是第三个查询条件不为空,不管第三个查询条件和其他任意一个查询条件一起查询,最后的结果就会是和or一样的结果。

因为第三个查询条件之后没有使用and进行连接,gele 方法本身不直接包含 ANDOR 逻辑,如果后面还有查询条件,则还需要在后面拼接 and。

以上观点存疑,我再看看。

几种 QueryWrapper 的使用方法
queryWrapper.like(StringUtils.isNotBlank(name), "name", name);
QueryWrapper<Entity> queryWrapper = new QueryWrapper<>();  
queryWrapper.eq("column1", value1) // 第一个 eq 条件  .eq("column2", value2) // 第二个 eq 条件  .ge("date_column", startDate) // 第三个条件,大于等于某个开始日期  .le("date_column", endDate) // 第四个条件,小于等于某个结束日期  .eq("column3", value3); // 第五个 eq 条件
queryWrapper.lambda().like(User::getName,name);
// 对 name 进行判空处理  
if (name != null && !name.isEmpty()) {  // 如果 name 不为空且不为空字符串,则添加 like 查询条件  queryWrapper.lambda().like(User::getName, name);  
}  

 

 近日总结:最近事情有点多,说有点多,但又比较少。

最近都在投简历,boss已读不回,网申有的测评做完了没水花了,也有笔试,哎,问题不大。

最近突然多了很多感悟,明白了很多东西都不能强求,过去的事情就过去了。

一句话,还是得先做好自己。

保持初心。

其实想了这么久,我还是坚持原本的态度,还是人更重要。

也可能你以后会站在一个更高的层面,会遇到更多更好的人,但对我来说,好的人会有好的人去匹配,我只坚持我那最开始的就好。

但是现实还是狠狠的打了我的脸。

之后又看到一句话,为什么遇不到和自己一样的人,是因为他们是两块一样的拼图,两块一样的拼图怎么会拼到一起。

世事无常,还是应该做好自己,守护好自己的那一方土地。

很多事情都没有了探寻真相的意义,那就把这些东西当作灵魂的枷锁丢掉吧。

别让自己的灵魂负重太多。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 磁盘加密工具 | VeraCrypt v1.26.15 绿色版
  • STM32基础篇:RTC × Unix时间戳 × BKP
  • [Deepin] 简单使用 RustDesk 实现远程访问Deepin
  • LeetCode 热题100-70 最小栈
  • [数据库][oracle]ORACLE EXP/IMP的使用详解
  • MySQL数据类型-介绍
  • 服务器安装pytorch-阿里云-centos7
  • springboot启动很慢,加载xml时卡住 或者 {dataSource-1} inited卡住 或者 primary数据库配置错误,很久启动不起来
  • PHP + Redis 实现抽奖算法(ThinkPHP5)
  • 145. 利用 Redis Bitmap实践: 用户签到统计
  • 【ArcGIS Pro原理第一期】各种空间插值原理:GPI、LPI、IDW等
  • 七月刚入职字节跳动的测试开发面试题,附答案
  • 【全网最全】《2024高教社杯/国赛》 C题 思路+代码+文献 蒙特卡洛+遗传算法 一到三问 农作物的种植策略
  • Linux系统运行模式以及链接文件
  • 高级java每日一道面试题-2024年9月04日-前端篇-前端的框架分类有哪些?
  • 【前端学习】-粗谈选择器
  • Cookie 在前端中的实践
  • JSDuck 与 AngularJS 融合技巧
  • leetcode388. Longest Absolute File Path
  • MySQL用户中的%到底包不包括localhost?
  • Spring Boot快速入门(一):Hello Spring Boot
  • Vue ES6 Jade Scss Webpack Gulp
  • Webpack 4 学习01(基础配置)
  • Zepto.js源码学习之二
  • 前端之React实战:创建跨平台的项目架构
  • 深度学习入门:10门免费线上课程推荐
  • 学习HTTP相关知识笔记
  • MyCAT水平分库
  • ​你们这样子,耽误我的工作进度怎么办?
  • ​一、什么是射频识别?二、射频识别系统组成及工作原理三、射频识别系统分类四、RFID与物联网​
  • ${ }的特别功能
  • (+4)2.2UML建模图
  • (2)关于RabbitMq 的 Topic Exchange 主题交换机
  • (39)STM32——FLASH闪存
  • (ZT)一个美国文科博士的YardLife
  • (编程语言界的丐帮 C#).NET MD5 HASH 哈希 加密 与JAVA 互通
  • (二)Linux——Linux常用指令
  • (二)延时任务篇——通过redis的key监听,实现延迟任务实战
  • (附源码)springboot码头作业管理系统 毕业设计 341654
  • (免费领源码)python+django+mysql线上兼职平台系统83320-计算机毕业设计项目选题推荐
  • (转)负载均衡,回话保持,cookie
  • (转)项目管理杂谈-我所期望的新人
  • .halo勒索病毒解密方法|勒索病毒解决|勒索病毒恢复|数据库修复
  • .libPaths()设置包加载目录
  • .net redis定时_一场由fork引发的超时,让我们重新探讨了Redis的抖动问题
  • .net web项目 调用webService
  • .NET 设计模式—适配器模式(Adapter Pattern)
  • .NET 中 GetHashCode 的哈希值有多大概率会相同(哈希碰撞)
  • .net遍历html中全部的中文,ASP.NET中遍历页面的所有button控件
  • .NET企业级应用架构设计系列之结尾篇
  • .net网站发布-允许更新此预编译站点
  • .net中生成excel后调整宽度
  • @Tag和@Operation标签失效问题。SpringDoc 2.2.0(OpenApi 3)和Spring Boot 3.1.1集成
  • [000-01-018].第3节:Linux环境下ElasticSearch环境搭建
  • [1]从概念到实践:电商智能助手在AI Agent技术驱动下的落地实战案例深度剖析(AI Agent技术打造个性化、智能化的用户助手)