MyBatis 使用报错:org.xml.sax.SAXParseException 元素内容必须由格式正确的字符数据或标记组成

这篇具有很好参考价值的文章主要介绍了MyBatis 使用报错:org.xml.sax.SAXParseException 元素内容必须由格式正确的字符数据或标记组成。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

  • 今天在使用 MyBatis 时出现报错: Caused by: org.xml.sax.SAXParseException: 元素内容必须由格式正确的字符数据或标记组成。
Caused by: org.apache.ibatis.builder.BuilderException: Error creating document instance.  Cause: org.xml.sax.SAXParseException; lineNumber: 57; columnNumber: 24; 元素内容必须由格式正确的字符数据或标记组成。
	at org.apache.ibatis.parsing.XPathParser.createDocument(XPathParser.java:259)
	at org.apache.ibatis.parsing.XPathParser.<init>(XPathParser.java:125)
	at org.apache.ibatis.builder.xml.XMLMapperBuilder.<init>(XMLMapperBuilder.java:78)
	at com.baomidou.mybatisplus.spring.MybatisSqlSessionFactoryBean.buildSqlSessionFactory(MybatisSqlSessionFactoryBean.java:581)
	... 81 common frames omitted
Caused by: org.xml.sax.SAXParseException: 元素内容必须由格式正确的字符数据或标记组成。
	at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.createSAXParseException(ErrorHandlerWrapper.java:203)
	at com.sun.org.apache.xerces.internal.util.ErrorHandlerWrapper.fatalError(ErrorHandlerWrapper.java:177)
	at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:441)
	at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:368)
	at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1436)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.startOfMarkup(XMLDocumentFragmentScannerImpl.java:2636)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2734)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:606)
	at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:510)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:848)
	at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:777)
	at com.sun.org.apache.xerces.internal.parsers.XMLParser.parse(XMLParser.java:141)
	at com.sun.org.apache.xerces.internal.parsers.DOMParser.parse(DOMParser.java:243)
	at com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderImpl.parse(DocumentBuilderImpl.java:348)
	at org.apache.ibatis.parsing.XPathParser.createDocument(XPathParser.java:257)
	... 84 common frames omitted
 
Disconnected from the target VM, address: '127.0.0.1:54640', transport: 'socket'

问题分析

  • 根据报错提示大概率是 xml 文件 SQL 的问题,经过确认确实是 xml 文件 SQL 的问题,xml 文件 SQL 语句中不能直接使用大小写符号(>、<、>=、<=)等,可以使用下面两种方案解决。
  • 注:使用 @Select 同理

解决方案

方案一:使用 CDATA 区块,依然使用 “ > ” 或者 “ < ”

  • CDATA(Character Data)是一种在XML文档中表示文本数据的方式。CDATA区块中的文本数据不会被XML解析器解析,而是被视为纯文本。
<select id="getLoginLogByPage" resultType="com.mcp.entity.LoginLog">
	SELECT l.id, l.job_number, l.name, l.createDate, l.ip_addr
		, l.remark
	FROM loginlog l
	<where>
		<if test="jobNumber != null" >
			<![CDATA[ and l.job_number > #{jobNumber}]]>
		</if>
	</where>
	GROUP BY l.today_date, l.ip_address;
 
</select>

方案二:使用转义字符

  • 虽然无法使用相关字符,但是我们可以使用其转义后的字符,具体对应如下:

MyBatis 使用报错:org.xml.sax.SAXParseException 元素内容必须由格式正确的字符数据或标记组成,Mybatis,mybatis,xml


<select id="getLoginLogByPage" resultType="com.mcp.entity.LoginLog">
	SELECT l.id, l.job_number, l.name, l.createDate, l.ip_addr
		, l.remark
	FROM loginlog l
	<where>
		<if test="jobNumber != null" >
			and l.job_number &gt; #{jobNumber}
		</if>
	</where>
	GROUP BY l.today_date, l.ip_address;
 
</select>

个人简介

👋 你好,我是 Lorin 洛林,一位 Java 后端技术开发者!座右铭:Technology has the power to make the world a better place.

🚀 我对技术的热情是我不断学习和分享的动力。我的博客是一个关于Java生态系统、后端开发和最新技术趋势的地方。

🧠 作为一个 Java 后端技术爱好者,我不仅热衷于探索语言的新特性和技术的深度,还热衷于分享我的见解和最佳实践。我相信知识的分享和社区合作可以帮助我们共同成长。

💡 在我的博客上,你将找到关于Java核心概念、JVM 底层技术、常用框架如Spring和Mybatis 、MySQL等数据库管理、RabbitMQ、Rocketmq等消息中间件、性能优化等内容的深入文章。我也将分享一些编程技巧和解决问题的方法,以帮助你更好地掌握Java编程。

🌐 我鼓励互动和建立社区,因此请留下你的问题、建议或主题请求,让我知道你感兴趣的内容。此外,我将分享最新的互联网和技术资讯,以确保你与技术世界的最新发展保持联系。我期待与你一起在技术之路上前进,一起探讨技术世界的无限可能性。

📖 保持关注我的博客,让我们共同追求技术卓越。文章来源地址https://www.toymoban.com/news/detail-807505.html

到了这里,关于MyBatis 使用报错:org.xml.sax.SAXParseException 元素内容必须由格式正确的字符数据或标记组成的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • MyBatis的使用(XML映射文件)

    MyBatis基于注解开发简单便捷,但是弊端是失去SQL语句的灵活性,不能根据实际情况产生不同的SQL语句 MyBatis除了支持注解开发以外,还支持一种开发方式:XML映射文件,将SQL语句写到XML映射文件中,基于更多种的选择可以让SQL变得更加灵活 1.开发方式 1.和基于注解开发方式一

    2024年02月08日
    浏览(37)
  • MyBatis基本使用及XML配置

    MyBatis是一款优秀的 持久层框架, 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集的过程,减少了代码的冗余,减少程序员的操作,可以使用简单的 XML 或注解来配置和映射原生信息,将接口和 Java 的 实体类 【Plain Old Java Objects,普通的 Java对象】映射成数据库中的

    2024年02月03日
    浏览(79)
  • mybatis中的mapper.xml中如何使用in方法

    提示:mapper.xml中如何使用in方法一般都是like或= 提示:使用foreach 注意,传入的参数是List ,如果传入的是array 则需要修改 collection部分定义为 collection=“array” 在MyBatis中使用in参数为集合时,需要使用到foreach标签。 下面详细介绍以下foreach标签的几个参数

    2024年02月15日
    浏览(42)
  • mybatis使用xml中的if-else/choose

    最近需要使用 xml 文件来实现一些增删改查,此文对 其中的 if-else 加以说明 背景: 有一个引用类,假设叫 Student 现在我们查询条件也被封装成一个引用类,例如: 那么使用 xml 怎么来使用和接收呢? 首先肯定是在 mapper 里面有一个方法 然后在 xml 文件中写这个方法的具体实

    2024年04月23日
    浏览(36)
  • MyBatis第二课,灰度发布,@Results注解,使用xml书写mysql

      目录 打印MyBatis的日志配置: 灰度发布:指发布环境,比如发布环境有200台机器,发布的时候是一批一批的机器的发布 2.删除与修改 使用@Results注解,这样就和上面的别名一个意思,column是数据库的列 自动转驼峰(优雅,最推荐使用) 学习XML的方式 MyBatis:用于去简化数据库

    2024年01月17日
    浏览(38)
  • Spring Boot入门(10):Mybatis之XML映射文件>、<=等特殊符号使用 | 保姆级教程

            在Mybatis的XML映射文件中,我们经常需要使用一些特殊符号来完成SQL语句的拼接,比如小于号“”、小于等于号“=”等。然而,由于这些符号在XML中有特殊的含义,因此直接在映射文件中使用可能会导致编译错误或者运行时异常。那么,如何才能正确地使用这些特殊

    2024年02月11日
    浏览(60)
  • 【mybatis】mapper.xml中foreach的用法,含批量查询、插入、修改、删除方法的使用

    一、xml文件中foreach的主要属性 foreach元素的属性主要有 collection,item,index,separator,open,close。 collection: 表示集合,数据源 item :表示集合中的每一个元素 index :用于表示在迭代过程中,每次迭代到的位置 separator :表示在迭代时数据以什么符号作为分隔符 open :表示该语

    2024年02月12日
    浏览(50)
  • Spring Boot入门(10):Mybatis之XML映射文件中如何使用特殊符号?揭秘<、<=等符号的正确使用方法!

            在Mybatis的XML映射文件中,我们经常需要使用一些特殊符号来完成SQL语句的拼接,比如小于号“”、小于等于号“=”等。然而,由于这些符号在XML中有特殊的含义,因此直接在映射文件中使用可能会导致编译错误或者运行时异常。那么,如何才能正确地使用这些特殊

    2024年02月09日
    浏览(45)
  • Mybatis Plus中使用LambdaQueryWrapper进行分页以及模糊查询对比传统XML方式进行分页

    传统的XML方式只能使用limit以及offset进行分页,通过判断name和bindState是否为空,不为空则拼接条件。 只需要在Service实现类中直接调用Mybatis Plus的方法即可进行操作。 return PageSanitationCompanyStaff类型可以得到数据的总数,你也可以通过.getRecords()方式获取List集合 这样子,我们就

    2024年02月12日
    浏览(59)
  • Spring Boot入门(09):如何使用MyBatis的XML配置方式实现MySQL的增删改查操作?

            想要快速高效地开发Java Web应用程序,选择使用Spring Boot和MyBatis无疑是明智之举。本篇文章将教你使用MyBatis的XML配置方式,结合MySQL数据库,实现常见的增删改查操作,让你的应用程序更加实用和强大。跟随本文一起来探索MyBatis在Spring Boot中的力量吧!        

    2024年02月11日
    浏览(67)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包