记一次mybatis-plus关于Long和long自动添加过滤条件的bug记录

news2024/10/6 22:33:15

文章目录

    • 1.前提条件
    • 2.相关知识
    • 3.原理解释:
    • 4.情景复现:

1.前提条件

接口代码是由mybatis-plus封装的page分页
有一个实体类属性类型是longLong的区别:long会添加一个过滤条件未异常情况,改成Long则不会添加是正常情况,详细情况参考下文情况一日志和情况二日志

2.相关知识

Java中Long和long的区别

  1. long是java中的基本数据类型,而Long是java中对象类型;
  2. 对于Long类型的数据,该数据是一个对象,而对于long类型的数据,该数据是一个基本数据类型,不属于对象。

3.原理解释:

MyBatis-Plus 是一个基于 MyBatis 的增强工具,用于简化 MyBatis 的开发流程。关于 Long 和 long 类型在 MyBatis-Plus 中自动添加过滤条件的问题,可以根据字段类型的不同,有不同的处理方式。
Long 类型:对于 Long 类型的字段,MyBatis-Plus 会默认添加一个非空判断条件(IS NOT NULL)。这意味着如果传入的参数值为 null,则 MyBatis-Plus 会生成一个非空判断的 SQL 条件,从而过滤掉数据库中该字段值为 null 的记录。
long 类型:对于基本类型的 long 字段,由于不能为 null,MyBatis-Plus 不会生成额外的过滤条件。因为基本类型的 long 字段默认值为 0,如果没有进行赋值,则会将字段值设置为 0,不会影响查询结果。

4.情景复现:

接口代码:

	@GetMapping("/page")
    public R getPage(Page page, LiveInfo liveInfo) {
		Page<LiveInfo> liveInfoPage = liveInfoService.page(page, Wrappers.query(liveInfo));
		return R.ok(liveInfoPage);
    }

实体类long属性:

	/**
     * 观看时间要求
     */
    private Long viewTime;

情况一: 使用long类型

  • 接口返回数据:
    在这里插入图片描述

  • 控制台日志:

2023-08-11 17:54:20.805 DEBUG 11084 --- [  XNIO-1 task-1] c.j.c.m.l.m.L.selectPage_mpCount         : ==>  Preparing: SELECT COUNT(*) FROM live_info WHERE view_time = ?
2023-08-11 17:54:20.806 DEBUG 11084 --- [  XNIO-1 task-1] c.j.c.m.l.m.L.selectPage_mpCount         : ==> Parameters: 0(Long)
2023-08-11 17:54:20.820 DEBUG 11084 --- [  XNIO-1 task-1] c.j.c.m.l.m.L.selectPage_mpCount         : <==      Total: 1

情况二: 使用Long类型

  • 接口返回数据:
    在这里插入图片描述
  • 控制台日志:
2023-08-11 17:51:33.283 DEBUG 9280 --- [  XNIO-1 task-1] c.j.c.m.l.m.L.selectPage_mpCount         : ==>  Preparing: SELECT COUNT(*) FROM live_info
2023-08-11 17:51:33.284 DEBUG 9280 --- [  XNIO-1 task-1] c.j.c.m.l.m.L.selectPage_mpCount         : ==> Parameters: 
2023-08-11 17:51:33.299 DEBUG 9280 --- [  XNIO-1 task-1] c.j.c.m.l.m.L.selectPage_mpCount         : <==      Total: 1
2023-08-11 17:51:33.301 DEBUG 9280 --- [  XNIO-1 task-1] c.j.c.m.l.m.LiveInfoMapper.selectPage    : ==>  Preparing: SELECT * FROM live_info LIMIT ?
2023-08-11 17:51:33.302 DEBUG 9280 --- [  XNIO-1 task-1] c.j.c.m.l.m.LiveInfoMapper.selectPage    : ==> Parameters: 20(Long)
2023-08-11 17:51:33.321 DEBUG 9280 --- [  XNIO-1 task-1] c.j.c.m.l.m.LiveInfoMapper.selectPage    : <==      Total: 3

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/879370.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

leetcode358周赛

2815. 数组中的最大数对和 核心思想&#xff1a;维护每一个最大的数字的最大值&#xff0c;然后一边更新最大值&#xff0c;一边统计结果。其中求nums中的每一个数的数位最大值可以用map的方法&#xff0c;我自己做的时候是用的%10&#xff0c;感觉map这种方法很巧妙。 2816. …

如何在iPhone手机上修改手机定位和模拟导航?

如何在iPhone手机上修改手机定位和模拟导航&#xff1f; English 首先&#xff0c;你需要在Mac电脑上下载安装 Location Simulator/定位模拟工具 和 Runner 这两款应用程序。 完成安装后&#xff0c;打开软件&#xff0c;并用USB连接手机设备 修改iPhone手机定位和模拟导航 …

锐捷无线产品运维

目录 登录AP产品 Console登录&#xff08;只可以现场登录&#xff09; Web/Telnet/SSH登录&#xff08;可以现场、远程登录&#xff09; 配置AP的管理地址 通过Web界面远程登录 通过Telnet、SSH等命令行的方式登录 登录AC产品 Console登录&#xff08;只可以现场登录&a…

CSS中的position属性有哪些值,并分别描述它们的作用。

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐ static⭐ relative⭐ absolute⭐ fixed⭐ sticky⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那…

梯度下降介绍

什么是梯度 梯度是微积分中一个很重要的概念&#xff0c;在单变量的函数中&#xff0c;梯度其实就是函数的微分&#xff0c;代表着函数在某个给定点的切线的斜率&#xff1b;在多变量函数中&#xff0c;梯度是一个向量&#xff0c;向量有方向&#xff0c;梯度的方向就指出了函…

【2023年11月第四版教材】《第4章-信息系统管理(合集篇)》

第4章-信息系统管理之管理方法&#xff08;第四版新增章节&#xff09;&#xff08;第一部分&#xff09; 章节说明1 管理方法1.1 信息系统四个要素1.2 信息系统四大领域1.3 信息系统战略三角1.4 信息系统架构转换1.5 信息系统体系架构1.6 信息系统运行1.7 运行和监控1.8 管理和…

day42时间格式转化

题目描述&#xff1a; 解题思路 1.将字符串给以" "为间隔进行切割然后各个部分进行不同的处理。 字符串切割使用 strtok(char* a, char* b) 函数&#xff0c;该函数返回切割完成后第一个子串的指针。 //切割&#xff0c;返回第一个字串的指针。这里注意&#xff0c;…

Kafka3.0.0版本——Broker( 退役旧节点)示例

目录 一、服务器信息二、先启动4台zookeeper&#xff0c;再启动4台kafka三、通过PrettyZoo工具验证启动的kafka是否ok四、查看4台kafka集群节点上是否存在创建的名称为news的主题五、退役旧节点5.1、执行负载均衡操作5.2、 执行停止命令5.3、再次查看kafka中的创建过的名称为ne…

单片机通讯技术应用解析:传感器数据交互、外设控制与配置等案例分析

随着科技的不断发展&#xff0c;单片机通讯技术在各个领域的应用越来越广泛。本文将从单片机通讯技术的基本原理、常见通讯方式以及应用案例等方面进行详细介绍和分析。 首先&#xff0c;我们将深入探讨单片机通讯技术的基本原理和通讯方式。单片机通讯的基本原理是通过特定的…

Element Plus报错:ResizeObserver loop completed with undelivered notifications.

el-selected踩坑&#xff1a;el-selected 显示下拉框 mouseover 时报错&#xff01;&#xff01;&#xff01; 原来是属性 popper-append-to-body 被废除&#xff0c;改为 teleported。 element ui <el-select:popper-append-to-body"false"value-key"id&q…

【无监督】2、MAE | 自监督模型提取的图像特征也很能打!(CVPR2022 Oral)

文章目录 一、背景二、方法三、效果 论文&#xff1a;Masked Autoencoders Are Scalable Vision Learners 代码&#xff1a;https://github.com/facebookresearch/mae 出处&#xff1a;CVPR2022 Oral | 何凯明 | FAIR 一、背景 本文的标题突出了两个词&#xff1a; masked…

基于 ObjectOutputStream 实现 对象与二进制数据 的序列化和反序列化

目录 为什么要进行序列化呢&#xff1f; 如何实现 对象与二进制数据 的序列化和反序列化&#xff1f; 为什么要进行序列化呢&#xff1f; 主要是为了把一个对象&#xff08;结构化的数据&#xff09;转化成一个 字符串 / 字节数组&#xff0c;方便我们存储&#xff08;有时候需…

Web安全:中间件漏洞

中间件一般指的是IIS、Apache、Nginx、Tomcat及Weblogic等一系列Web服务器中间件。中间件存在漏洞会直接威胁Web服务器代码及后台数据库的安全。 以前出现过的中间件漏洞一般是文件解析漏洞&#xff0c;例如IIS文件解析漏洞、Apache文件解析漏洞及Nginx文件解析漏洞等。如今我…

大模型时代和传统机器学习时代工具栈侧重点有所不同

大模型时代和传统机器学习时代工具栈侧重点有所不同 本章从企业训练模型、构建AI赋能应用的工作流视角出发,详解涉及的主要环节,并关注LLMOps和MLOps在流程上的侧重点差异。我们认为AI = Data + Code,历经数据准备、模型训练、模型部署、产品整合,分环节看: ► 数据准…

服务器安全防御要注意哪些方面?

服务器安全是我们每个互联网公司都应该做好的一个环节&#xff0c;每个互联网公司都会涉及到信息数据安全&#xff0c;而这些数据信息一般存放的地方都是在服务器&#xff0c;如果服务器受到破坏&#xff0c;我们的数据信息将会受到侵犯届时将会造成不可挽回的损失&#xff0c;…

三维模型OSGB格式轻量化在网络传输中的重要性探讨

三维模型OSGB格式轻量化在网络传输中的重要性探讨 随着三维模型应用的不断增加&#xff0c;网络传输成为了将三维模型从一个地方传输到另一个地方的主要方式。在网络传输中&#xff0c;数据量越大&#xff0c;传输速度就越慢&#xff0c;因此轻量化OSGB格式的三维模型数据在网络…

C#_详解浮点数类型特征

浮点数 浮点数基础 float double decimal 浮点数示例 float f; double d; decimal m;//①超过精度位数&#xff0c;数字无效 f 1234567890f; Console.WriteLine("f {0}",f);//f 1.234568E09//②再赋给更大精度度量&#xff0c;不能恢复数字 d f; Console.Write…

excel入门

上下左右移动 enter:换行&#xff0c;向下移动 shiftenter:向上移动 tab:向右移动 shifttab:向左移动 合并居中操作 开始-》合并居中 CtrlM 内容过长盖过了下一个单元格内容 双击列与列之间线 同时修改多行或者多列宽度或者高度 修改单行高度宽度 选中某一行拉取指定高…

Stable Diffusion基础:ControlNet之图片高仿效果

今天继续给大家分享AI绘画中 ControlNet 的强大功能&#xff0c;本次的主角是 Reference&#xff0c;它可以将参照图片的风格迁移到新生成的图片中&#xff0c;这句话理解起来很困难&#xff0c;我们将通过几个实例来加深体会&#xff0c;比如照片转二次元风格、名画改造、AI减…

C#字符串占位符替换

using System;namespace myprog {class test{static void Main(string[] args){string str1 string.Format("{0}今年{1}岁&#xff0c;身高{2}cm&#xff0c;月收入{3}元&#xff1b;", "小李", 23, 177, 5000);Console.WriteLine(str1);Console.ReadKey(…