Java 使用MyBatis-Plus数据操作关键字冲突报错You have an error in your SQL syntax问题
问题
这个报错是出现在Java Spring boot项目中,使用MyBatis-Plus通过创建的实体类对数据库的操作过程中,通过实体创建数据库表是没有问题的,而在接口调用服务类操作数据库的时候,会出现报错。报错详情如下:
服务请求异常:org.springframework.jdbc.BadSqlGrammarException:
com..server.mapper.UsageMapper.insert (batch index #1) failed.
Cause: java.sql.BatchUpdateException: You have an error in your SQL
syntax; check the manual that corresponds to your MySQL server version
for the right syntax to use near 'usage,…… create_time,
update_time) VALUES (1854720160046714882, 18547201’ at line 1; bad
SQL grammar []; nested exception is java.sql.BatchUpdateException: You
have an error in your SQL syntax; check the manual that corresponds to
your MySQL server version for the right syntax to use near 'usage,
…… , create_time, update_time) VALUES (1854720160046714882,
18547201’ at line 1.
其中的实体类如下:
@Data
@TableName(autoResultMap = true)
@TableComment("用量信息")
@ApiModel(value = "用量信息")
public class GoodsUsage {@ApiModelProperty(value = "id")@Column(comment = "id")private Long id;@ApiModelProperty(value = "用量")@Column(comment = "用量")private BigDecimal usage;@ApiModelProperty("创建时间")@Column(comment = "创建时间")private LocalDateTime createTime;@ApiModelProperty("更新时间")@Column(comment = "更新时间")private LocalDateTime updateTime;
}
报错的调用处理是批量保存数据记录:
this.saveBatch(usages);
解决方法
看到报错问题,以为是关键字引起数据库操作问题,后来发现MyBatis-Plus已经根据实体创建出了数据库表:

后续没有照着这个方向调试,而是以为MyBatis-Plus 的LambdaQueryWrapper 表达式所生成的SQL语句有问题,排查了很久,也没有发现问题,不过将控制台选择复制打印的params的sql语句复制过去存在同样的报错,最后发现是usage字段名和MySQL的Usage权限重名了,也就是关键字冲突,将usage字段重命名为其他可用的名称即可修复。
以下为其他解决参考:
注意尽量避免使用关键字作为表名或者字段名,如果一定要用关键字作为字段名,在SQL处理时,用单引号将名称括起来(‘usage’); MyBatis-Plus 的关键字处理,可以使用 @TableName 和 @TableField 注解来处理关键字,这样 MyBatis-Plus 在构建 SQL 时会使用单引号‘’来包围列名,从而避免了关键字冲突。
可以使用如下代码获取所有保留关键字:
import com.baomidou.mybatisplus.core.toolkit.StringPool;
import com.baomidou.mybatisplus.core.toolkit.SqlReservedWords;String keywords = String.join(StringPool.COMMA, SqlReservedWords.KEYWORDS);
System.out.println("保留关键字: " + keywords);
相关文章:
Java 使用MyBatis-Plus数据操作关键字冲突报错You have an error in your SQL syntax问题
问题 这个报错是出现在Java Spring boot项目中,使用MyBatis-Plus通过创建的实体类对数据库的操作过程中,通过实体创建数据库表是没有问题的,而在接口调用服务类操作数据库的时候,会出现报错。报错详情如下: 服务请求异…...
深入浅出 ChatGPT 底层原理:Transformer
Transformer 在人工智能和自然语言处理领域,Transformer架构的出现无疑是一个里程碑式的突破。它不仅推动了GPT(Generative Pre-trained Transformer)等大型语言模型的发展,还彻底改变了我们处理和理解自然语言的方式。 GPT与Transformer GPT 近几年,人工智能技…...
opc da 服务器数据 转 IEC61850项目案例
目录 1 案例说明 2 VFBOX网关工作原理 3 应用条件 4 查看OPC DA服务器的相关参数 5 配置网关采集opc da数据 6 用IEC61850协议转发数据 7 网关使用多个逻辑设备和逻辑节点的方法 8 在服务器上运行仰科OPC DA采集软件 9 案例总结 1 案例说明 在OPC DA服务器上运行OPC …...
SystemVerilog学习笔记(十一):接口
在Verilog中,模块之间的通信是使用模块端口指定的。 Verilog模块连接的缺点 声明必须在多个模块中重复。存在声明不匹配的风险。设计规格的更改可能需要修改多个模块。 接口 SystemVerilog引入了 interface 结构,它封装了模块之间的通信。一个 inter…...
华大单片机跑历程IO口被写保护怎么解决
一,说明 使用的单片机是HC32F460KETA华大单片机,使用的代码历程是小华单片机历程,具体历程在小华官网都可以找到。 在使用小华历程跑模拟IIC时,SCL时钟是有的,但是IO输入被LOCK了,所以在跑历程进行断点…...
Iotop使用
文章目录 Iotop依赖及编译1:内核配置2: 环境配置3.依赖库ncurses3.1 Ncurses的编译配置 4. Iotop的编译及修改5.测试效果如下: Iotop依赖及编译 源码路径:https://github.com/Tomas-M/iotop#how-to-build-from-source (GitHub - Tomas-M/iotop: A top u…...
定积分的快速计算技巧
快速换元公式——左加右减 对称区间,偶倍奇零 如果遇到对称区间,拿不准是奇函数还是偶函数直接用如下公式: 奇函数时: 偶函数时: arctanx与tanx的和式计算: 周期函数的积分性质 定积分几何意义 定积分的…...
第T7周:Tensorflow实现咖啡豆识别
🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 目标 具体实现 (一)环境 语言环境:Python 3.10 编 译 器: PyCharm 框 架: (二)具体步骤 1. 使…...
imagehash图片去重:保留图片文件名
简介 在日常工作中,我们可能需要管理大量图片,这些图片中可能存在图像相同文件名不同的情况。手动删除这些重复的图片既费时又费力。为了解决这个问题,我们可以编写一个Python脚本来自动化这个过程。 准备工作 在开始之前,请确保…...
在Docker环境下为Nginx配置HTTPS
前言 配置HTTPS已经成为网站部署的必要步骤。本教程将详细介绍如何在Docker环境下为Nginx配置HTTPS,使用自签名证书来实现加密通信。虽然在生产环境中建议使用权威CA机构颁发的证书,但在开发测试或内网环境中,自签名证书是一个很好的选择。 …...
vue面试题9|[2024-11-15]
问题1:scoped原理 1.作用:让样式在本组件中生效,不影响其他组件 2.原理:给节点新增自定义属性,然后css根据属性选择器添加样式。 问题2:让css只在当前组件生效 <style scoped> 问题3:scss…...
大数据技术在金融风控中的应用
💓 博客主页:瑕疵的CSDN主页 📝 Gitee主页:瑕疵的gitee主页 ⏩ 文章专栏:《热点资讯》 大数据技术在金融风控中的应用 大数据技术在金融风控中的应用 大数据技术在金融风控中的应用 引言 大数据技术概述 定义与原理 发…...
安装一键式重置密码插件(Linux)-CloudResetPwdAgent
为了保证使用镜像创建的裸金属服务器可以实现一键式密码重置功能,建议您在制作镜像时安装重置密码插件“CloudResetPwdAgent”。 前提条件 需保证虚拟机根目录可写入,且剩余空间大于600MB。 1.下载插件包 华为云已提供下载包连接 在PC机里下载好软件…...
如何平滑切换Containerd数据目录
如何平滑切换Containerd数据目录 大家好,我是秋意零。 这是工作中遇到的一个问题。搭建的服务平台,在使用的过程中频繁出现镜像本地拉取不到问题(在项目群聊中老是被人出来😅)原因是由于/目录空间不足导致࿰…...
月影和米家大路灯哪个好?书客、月影、米家谁会更胜一筹!
月影和米家大路灯哪个好?近两年以来,护眼大路灯以良好的品质走进大众的视线,成为许多用眼人群的刚需品,不少用户说可以改善光线质量,视觉疲劳感夜可以减少,但又有人说护眼大路灯是“幌子、智商税”…...
instanceof 的模式匹配(二)
在经过了JEP305(jdk14)和JEP375(jdk15)的两轮预览之后,模式匹配终于迎来了他的交付日期,在2022年发布的JDK16中,伴随着JEP 394的发布,预览结束了,我们来看一下这个特性的结束点到底说了什么。 在这次预览之中ÿ…...
【Spring】Bean的作用域和Spring的执行流程
目录 1.Bean的作用域 1.1 Singleton(单例) 1.2 Prototype(原型) 1.3 适用于SpringMVC的作用域 2.Spring的执行流程 2.1 Spring容器的初始化 2.2 Bean的创建和装配 2.3 Bean的生命周期管理 2.4 其他重要概念 3. Spring的执行流程简洁版 1.Bean的作用域 Spring Bean的…...
自动驾驶系列—从数据采集到存储:解密自动驾驶传感器数据采集盒子的关键技术
🌟🌟 欢迎来到我的技术小筑,一个专为技术探索者打造的交流空间。在这里,我们不仅分享代码的智慧,还探讨技术的深度与广度。无论您是资深开发者还是技术新手,这里都有一片属于您的天空。让我们在知识的海洋中…...
QtWebServer
QtWebServer 是创建基于 Qt 的高性能 Web 应用程序服务器的尝试,即。运行本机 C/Qt 代码以交付网站的 Web 服务器。 一个完美的用例是为较小的服务提供 REST API。 在 Qt 应用程序中,您可以设置资源并将其绑定到物理提供程序,例如文件或数据…...
网络基础概念与应用:深入理解计算机网络
引言 计算机网络作为现代信息技术的重要支柱,是连接世界各地的重要纽带。它使得计算机能够相互通信、协同工作,从而极大地提高了我们的工作效率和生活质量。本篇文章将深入探讨计算机网络的基础概念,覆盖网络的分层模型、协议、数据传输原理…...
BFR算法实战:如何高效处理大规模数据聚类
1. BFR算法:大数据时代的聚类利器 第一次接触BFR算法是在处理一个电商平台的用户行为数据集时。当时我们遇到了一个棘手的问题:服务器内存只有32GB,但需要处理的用户行为日志却超过了200GB。传统的K-means算法完全无法应对这种规模的数据&…...
Pixel Fashion Atelier入门必看:Forge!按钮物理位移反馈的CSS3实现原理
Pixel Fashion Atelier入门必看:Forge!按钮物理位移反馈的CSS3实现原理 1. 引言:像素世界的物理交互 在Pixel Fashion Atelier这款独特的图像生成工具中,最令人印象深刻的莫过于那个醒目的橙色"锻造"按钮。当用户点击时ÿ…...
2026 年智慧工地排名榜单第一|山东建安物联科技有限公司
2026 年度智慧工地综合实力榜单正式揭晓,山东建安物联科技有限公司(大建安)凭借标准引领、技术实力与标杆项目,登顶全国榜首,成为行业公认的智慧工地领军企业。公司打造的中建八局烟台崆峒胜境项目,获评国家…...
Matlab粒子动画:3D爱心生成与动态模拟
1. 从零开始理解Matlab粒子动画 第一次看到3D爱心在屏幕上跳动时,那种震撼感至今难忘。作为理工科学生,我们常常用Matlab处理枯燥的数据,但很少有人知道它还能创作出如此浪漫的视觉效果。这就像用计算器弹钢琴——工具本身没有情感࿰…...
逆流而上,逐光而行:光伏微逆的技术探索之路
交错反激光伏并网微逆:软件源程序硬件资料详细设计说明文档 产品介绍: 本项目用于单相光伏并网微型逆变器。 前级采用交错反激拓扑生成馒头波,后级采用SCR拓扑反向得到正弦波,带有:MPPT、锁相环、孤岛检测。 本项目支持…...
终极指南:如何在Chainer中构建强大的循环神经网络(RNN)
终极指南:如何在Chainer中构建强大的循环神经网络(RNN) 【免费下载链接】chainer A flexible framework of neural networks for deep learning 项目地址: https://gitcode.com/gh_mirrors/ch/chainer 想要掌握深度学习中的序列建模吗?Chainer框架…...
Windows Insider离线管理完全指南:无账户切换方法与命令行操作技巧
Windows Insider离线管理完全指南:无账户切换方法与命令行操作技巧 【免费下载链接】offlineinsiderenroll 项目地址: https://gitcode.com/gh_mirrors/of/offlineinsiderenroll 在Windows系统管理中,用户常常面临需要在不同更新通道间切换的需求…...
别再死记硬背了!用Vivado工具链图解FPGA底层:CLB、SLICE与LUT到底怎么连的?
用Vivado工具链图解FPGA底层:从代码到硬件的可视化之旅 当你在Vivado中编写完一段Verilog代码,点击综合按钮后,那些抽象的硬件描述究竟是如何变成FPGA芯片上实实在在的电路连接的?对于初学者来说,CLB、SLICE、LUT这些概…...
树莓派4B接口全解析:从HDMI到GPIO,新手必看的使用指南
树莓派4B接口全解析:从HDMI到GPIO的实战指南 第一次拿到树莓派4B时,那块巴掌大的电路板上密密麻麻的接口总让人望而生畏——哪个口接显示器?哪些针脚能控制LED?电源到底要多少伏?这些问题困扰过每个初学者。作为全球最…...
SenseVoice-small保姆级教程:Mac/Windows本地快速启动WebUI步骤
SenseVoice-small保姆级教程:Mac/Windows本地快速启动WebUI步骤 你是不是也遇到过这样的场景?开完会想整理录音,发现要上传到云端才能转文字,担心隐私泄露;或者想给视频加字幕,但手动打字太费时间…...

