MyBatis xml 文件中 SQL 语句的小于号未转义导致报错

news2024/11/13 18:09:38

问题现象

在 MyBatis 的 xml 文件中添加了一个 SQL 语句

<select id="countXxx" resultType="int">
        select count(*) from t1 where count < 3
</select>

启动 Spring Boot 应用程序后报错:

Caused by: org.apache.ibatis.builder.BuilderException: Error creating document instance.  Cause: org.xml.sax.SAXParseException; lineNumber: 109; columnNumber: 104; 元素内容必须由格式正确的字符数据或标记组成。
	at org.apache.ibatis.parsing.XPathParser.createDocument(XPathParser.java:263) ~[mybatis-3.5.6.jar:3.5.6]
	at org.apache.ibatis.parsing.XPathParser.<init>(XPathParser.java:127) ~[mybatis-3.5.6.jar:3.5.6]
	at org.apache.ibatis.builder.xml.XMLMapperBuilder.<init>(XMLMapperBuilder.java:81) ~[mybatis-3.5.6.jar:3.5.6]
	at com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean.buildSqlSessionFactory(MybatisSqlSessionFactoryBean.java:592) ~[mybatis-plus-extension-3.4.2.jar:3.4.2]
	... 72 common frames omitted
Caused by: org.xml.sax.SAXParseException: 元素内容必须由格式正确的字符数据或标记组成。
	at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203) ~[na:1.8.0_162]
	at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:177) ~[na:1.8.0_162]
	at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:400) ~[na:1.8.0_162]
	at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327) ~[na:1.8.0_162]

IntelliJ IDEA 也提示了:

问题原因

这个问题的原因不符合是 XML 文件的语法,因为小于号 < 和 XML 文件的标签符号是一样的,所以在 XML 文件中使用小于号时要使用转义符号 <

修改方法

<!-- 小于 -->
<select id="countXxx" resultType="int">
        select count(*) from t1 where count &lt; 3
</select>

<!-- 小于等于 -->
<select id="countXxx" resultType="int">
        select count(*) from t1 where count &lt;= 3
</select>

参考

  • https://www.w3schools.com/xml/xml_syntax.asp

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

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

相关文章

前端学习之ES6+

1.ES6是什么 ES6&#xff0c;全称是ECMAScript 6&#xff0c;是JavaScript语言的下一代标准&#xff0c;由ECMA国际组织在2015年6月正式发布。ES6也被称作ECMAScript 2015&#xff0c;从这个版本开始&#xff0c;ECMA组织决定每年发布一个新的ECMAScript版本&#xff0c;以使J…

学习笔记:黑马程序员JavaWeb开发教程(2024.11.8)

5.10 分层解耦-分层解耦&#xff08;IOC-DI&#xff09; 在之前写的代码中&#xff0c;Controller层中new了一个Service层中的对象&#xff0c;在Service层中类名改变&#xff0c;则Controller层中也需要变化&#xff0c;这就是两个层之中耦合较重&#xff0c;需要减少耦…

Python常见并行化方法及性能对比

Python代码中通常有三种实现并行化的方法 multiprocessing的同步方法&#xff0c;mapmultiprocessing的异步方法&#xff0c;apply_asyncRay提供的并行或分布式能力 Ray 和 Python 的 multiprocessing 模块都是用于并行和分布式计算的工具&#xff0c;但它们在设计目标、功能…

【软考】系统分析师第二版 新增章节 第20章微服务系统分析与设计

微服务系统是一类基于微服务架构风格的分布式系统&#xff0c;它将应用程序拆分成多个独立的小型服务&#xff0c;每个服务都运行在独立的进程中&#xff0c;并采用轻量级通信协议进行通信。这些服务可以由不同的团队开发、不同的编程语言编写&#xff0c;并且可以按需部署。微…

【WRF理论第七期】WPS预处理

【WRF理论第七期】WPS预处理 运行WPS&#xff08;Running the WPS&#xff09;步骤1&#xff1a;Define model domains with geogrid步骤2&#xff1a;Extracting meteorological fields from GRIB files with ungrib步骤3&#xff1a;Horizontally interpolating meteorologic…

【设计模式】行为型模式(一):模板方法模式、观察者模式

行为型模式&#xff08;一&#xff09;&#xff1a;模板方法模式、观察者模式 1.模板方法模式&#xff08;Template&#xff09;1.1 主要特点1.2 适用场景1.3 示例1.3.1 抽象类定义模板方法1.3.2 子类实现具体步骤1.3.3 客户端1.3.4 结果输出 2.观察者模式&#xff08;Observer…

【ESP32】ESP-IDF开发 | 低功耗管理+RTC唤醒和按键唤醒例程

1. 简介 ESP32支持5种低功耗模式&#xff0c;低功耗管理单元包括调压器、功耗控制器、电源开关单元、电源域隔离单元 (Isolation Cell) 等部分。 1.1 RTC单元 RTC单元是ESP32低功耗管理的核心&#xff0c;可用于管理低功耗模式的进入和退出&#xff0c;控制时钟源、PLL、电源开…

国家电投“电投云”平台,浪潮信息助力其登顶IDC大奖

近日&#xff0c;国际权威咨询机构IDC揭晓了“2024 IDC中国未来企业大奖”优秀奖榜单。国家电力投资集团有限公司倾力打造的“电投云”平台&#xff0c;凭借其卓越的大规模云计算能力、高效的应用迁移设计&#xff0c;成功支撑了集团的产业数字化与管理数字化应用&#xff0c;为…

下载mysql的jar,添加至jmeter中,编写jdbc协议脚本1106

下载jar包&#xff1a; 步骤1&#xff1a;进入maven仓库官网https://mvnrepository.com/ 步骤2&#xff1a;搜索实际的数据库 步骤3&#xff1a;点击 Mysql connnector/J 步骤5、查看数据库的版本号&#xff0c;选择具体版本&#xff0c;我的是mysql 8.0.16,下图&#xff0c;…

【分布式事务】二、NET8分布式事务实践: DotNetCore.CAP 框架 、 消息队列(RabbitMQ)、 数据库(MySql、MongoDB)

介绍 [CAP]是一个用来解决微服务或者分布式系统中分布式事务问题的一个开源项目解决方案, 同样可以用来作为 EventBus 使用 github地址:https://github.com/dotnetcore/CAP官网地址: https://cap.dotnetcore.xyz/官网文档:https://cap.dotnetcore.xyz/userguide/zh/cap/id…

嘉吉连续第七年亮相进博会

以“新质绿动&#xff0c;共赢未来”为主题&#xff0c;嘉吉连续第七年亮相进博会舞台。嘉吉带来了超过120款产品与解决方案&#xff0c;展示嘉吉在农业、食品、金融和工业等领域以客户为中心的创新成果。这些产品融合了嘉吉在相关领域的前瞻性思考&#xff0c;以及对本土市场的…

低代码工作流平台概述-自研

讲解视频可看【【低代码】【企业级】【毕设】一键生成web应用&#xff0c;最强最便捷简单的低代码工作流平台-哔哩哔哩】 【低代码】【企业级】【毕设】一键生成web应用&#xff0c;最强最便捷简单的低代码工作流平台_哔哩哔哩_bilibili 1.在线设计数据库 2.表单设计 3.流程设…

vue3+vite 前端打包不缓存配置

最近遇到前端部署后浏览器得清缓存才能出现最新页面效果得问题 所以…按以下方式配置完打包就没啥问题了&#xff0c;原理很简单就是加个时间戳 /* eslint-disable no-undef */ import {defineConfig, loadEnv} from vite import path from path import createVitePlugins from…

【C++滑动窗口】1297. 子串的最大出现次数|1748

本文涉及的基础知识点 C算法&#xff1a;滑动窗口及双指针总结 固定长度滑动窗口 LeetCode1297. 子串的最大出现次数 给你一个字符串 s &#xff0c;请你返回满足以下条件且出现次数最大的 任意 子串的出现次数&#xff1a; 子串中不同字母的数目必须小于等于 maxLetters 。…

【Vue】简易博客项目跟做

项目框架搭建 1.使用vue create快速搭建vue项目 2.使用VC Code打开新生成的项目 端口号简单配置 修改vue.config.js文件&#xff0c;内容修改如下 所需库安装 npm install vue-resource --save --no-fund npm install vue-router3 --save --no-fund npm install axios --save …

机器人助力Bridge Champ游戏:1.4.2版本如何提升玩家体验

在Bridge Champ游戏中&#xff0c;机器人扮演着桥牌游戏的“无名英雄”角色&#xff0c;默默地提升玩家体验。凭借智能化的设计&#xff0c;这些机器人不仅能够陪练&#xff0c;也大大提升了比赛的流畅度与趣味性。 Bridge Champ是什么 Bridge Champ是一个基于Ignis公链的在线…

U-Mail反垃圾邮件网关精准拦截各种垃圾病毒邮件

在当今数字化时代&#xff0c;电子邮件已成为企业沟通不可或缺的一部分。然而&#xff0c;其开放性也使得电子邮件系统容易受到垃圾邮件和恶意软件的侵袭。根据最新数据&#xff0c;2024年第二季度&#xff0c;国内企业邮箱用户共收到9.1亿封垃圾邮件&#xff0c;这一数字比上一…

Docker可视化管理面板DPanel的安装

本文软件由网友 rui 推荐&#xff1b; 什么是 DPanel &#xff1f; DPanel 是一款 Docker 可视化管理面板&#xff0c;旨在简化 Docker 容器、镜像和文件的管理。它提供了一系列功能&#xff0c;使用户能够更轻松地管理和部署 Docker 环境。 软件特点&#xff1a; 可视化管理&…

Java——final用法

一、final 介绍 在Java中&#xff0c;final关键字有多种用途&#xff0c;可以用来修饰变量、方法和类。它的主要作用是确保所修饰的内容不可改变。 二、final 用法 1、修饰变量 1&#xff09;局部变量 当一个局部变量被声明为final时&#xff0c;它的值在初始化后就不能被…

科技改变生活:最新智能开关、调光器及插座产品亮相

根据QYResearch调研团队的最新力作《欧洲开关、调光器和插座市场报告2023-2029》显示&#xff0c;预计到2029年&#xff0c;欧洲开关、调光器和插座市场的规模将攀升至57.8亿美元&#xff0c;并且在接下来的几年里&#xff0c;将以4.2%的复合年增长率&#xff08;CAGR&#xff…