MyBatis异常:元素内容必须由格式正确的字符数据或标记组成

今天在写接口查询SQL时,报了一个异常,如下:
Cause: org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: org.xml.sax.SAXParseException; lineNumber: 1; columnNumber: 242; 元素内容必须由格式正确的字符数据或标记组成。

经查资料,发现是由于查询语句中"<"和">"引起的,在mybatis映射文件中直接使用这些运算符会引起解析错误,跟标签冲突。

==错误部分sql==

where ei.no = #{no} and qi.quote_time < pi.pricing_time

解决:用 <[CDATA[ ]]> 把 加括号 包裹起来或使用 &<;

==正确写法==

where ei.no = #{no} and ==<![CDATA[qi.quote_time < pi.pricing_time]]>

探究XML中CDATA与转义字符

对于<[CDATA[ ]]>:
所有 XML 文档中的文本均会被解析器解析。只有 CDATA 区段(CDATA section)中的文本会被解析器忽略。

转义字符:
非法的 XML 字符必须被替换为实体引用(entity reference)。

XML 中5 个预定义的实体引用:

严格地讲,在 XML 中仅有字符 "<"和"&" 是非法的。省略号、引号和大于号是合法的,但是把它们替换为实体引用是个好的习惯。

<[CDATA[ ]]>使用注意:
CDATA 部分不能包含字符串 "]]>"。也不允许嵌套的 CDATA 部分。
标记 CDATA 部分结尾的 "]]>" 不能包含空格或折行。

原文地址:https://www.cnblogs.com/tyrionhh/p/10708014.html

时间: 2024-10-10 03:54:21

MyBatis异常:元素内容必须由格式正确的字符数据或标记组成的相关文章

mybatis异常 :元素内容必须由格式正确的字符数据或标记组成。

今天同事写一个查询接口的时候,出错:元素内容必须由格式正确的字符数据或标记组成. 错误原因:mybatis查询的时候,需要用到运算符 小于号:< 和  大于号: >,在mybatis配置文件里面,这种会被认为是标签,所以解析错误 错误事例: select <include refid="Base_Column_List" /> from t_time_interval where status <> 99 and time_intvl_id >

解决:xml中出现“文档中根元素后面的标记必须格式正确。”的错误

配置业务域,type指定使用自定义的fieldType. 修改solr工程下的schema.xml文件,在文件末尾添加一个自定义的fieldType,如下: <schema>............</schema>    <fieldType name="text_ik" class="solr.TextField">      <analyzer class="org.wltea.analyzer.lucene

Spring MVC +MyBatis +MySQL 简单的登录查询 Demo 解决了mybatis异常

忙活了大半天,饭也没顾得上吃,哎许久不动手,一动手就出事,下面请看今天的重头戏,额吃个饭回来再发了! 1.整体结构 2.准备工作 数据库: --Mysql 5.6 创建数据库 wolf CREATE DATABASE wolf; 创建用户表 user create table user( id int  AUTO_INCREMENT  primary key, name varchar(25) not null, pwd varchar(20) not null, create_time dat

【转载】最近在用Arrays的asList()生成的List时,List元素的个数时而不正确

1 最近在用Arrays的asList()生成的List时,List元素的个数时而不正确. 2 3 Java代码 4 5 //经多次测试,只要传递的基本类型的数组,生成List的元素个数均为1 6 char arrc = {'a','b'}; 7 int arrint = {1,2,4}: 8 Arrays.asList(arrc).size() ;// 结果为1: 9 Arrays.asList(arrint ).size() ;//结果为1: 10 11 //传递对象数组,元素个数正确. 1

深入理解javascript描述元素内容的5个属性

× 目录 [1]innerHTML [2]outerHTML [3]innerText[4]outerText[5]textContent 前面的话 <p>This is a <i>simple</i> document</p> 上面这行代码中,<p>元素的内容是什么呢?答案一:内容是HTML字符串"This is a <i>simple</i> document":答案二:内容是纯文本字符串"

CSS基础3——使用CSS格式化元素内容的字体

1.CSS属性单位: (1)长度单位:包括绝对长度单位和相对长度单位 绝对长度单位包括:cm.mm.in.pt.pc等.绝对长度单位最好用于打印输出设备,在仅作为频幕显示时,绝对长度值并没有什么意义. 相对长度单位包括:px.em.ex等.相对长度指元素尺寸相对于浏览器的系统默认值来相应的缩放.em是相对于当前对象中文本M的字体尺寸大小.ex是相对于当前对象中文本x的字体尺寸大小.如果当前对行内文本额字体尺寸未被人为设置,则相对于浏览器默认字体尺寸. px,em,百分比的转换:16px = 1e

CSS基础4——使用CSS格式化元素内容的文本

CSS的文本属性用于控制文本的段落格式,如设置首行缩进.段落对齐方式.字间距.行间距等. 1.设置文本首行缩进:text-indent 可选属性值包含: 长度 / 百分比 2.设置文本对齐方式:text-align 可选属性包含:left / right / center,分别表示相左对齐.向右对齐,居中对齐 3.设置文本修饰方式:text-decoration 可选属性包含:none / underline (下划线)  / overline(上划线) / line-through(删除线)

CSS基础——使用CSS格式化元素内容的文本

CSS的文本属性用于控制文本的段落格式,如设置首行缩进,段落对齐方式.字间距.行间距等. 1.设置文本首行缩进:text-indent 可选属性值包括: 长度 / 百分比 2.设置文本对齐方式:text-align 可选属性包括:left / right / center,分别表示相左对齐,向右对齐,居中对齐 3.设置文本修饰方式:text-decoration 可选属性包括:none / underline (下划线)  / overline(上划线) / line-through(删除线)

如何在元素内容前后加图标

大家最常用作图标的元素是i标签,为什么呢? 用 <i> 元素做图标在语义上是不正确的(虽然看起来像 icon 的缩写): <i> 比 <span> 短,但 gzip 后差异很小,不过打字可以少按三个键: 多数图标用的是空 <i> 元素,配合 ::before 伪元素实现,因为没有内容,读屏器不会朗读(这样即使有特殊处理也跳过了),机器理解起来应该也没什么影响. 综合来看,从实用性上暂时没看出有什么缺陷,所以目前用不用 <i> 取决于你对于遵循规范