【mybatis】 “if“ 相关联的 “test“ 属性值不能包含 ‘<‘ 字符
前言
- mybatis 3.4.6
错误代码
mybatis XML mapper 错误
<select id="selectxxxList" parameterType="map" resultMap="xxxResult">...<if test="statusList != null and statusList.size()>0" >and status in <foreach item="item" collection="statusList" open="(" separator="," close=")">#{item}</foreach></if><if test="statusList == null or statusList.size() <= 0" >and status is null</if></select>
错误信息
Caused by: org.springframework.core.NestedIOException: Failed to parse mapping resource: 'file [D:\xxx\xxxMapper.xml]'; nested exception is org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: org.xml.sax.SAXParseException; lineNumber: 47; columnNumber: 69; 与元素类型 "if" 相关联的 "test" 属性值不能包含 '<' 字符。at org.mybatis.spring.SqlSessionFactoryBean.buildSqlSessionFactory(SqlSessionFactoryBean.java:523)at org.mybatis.spring.SqlSessionFactoryBean.afterPropertiesSet(SqlSessionFactoryBean.java:380)at org.mybatis.spring.SqlSessionFactoryBean.getObject(SqlSessionFactoryBean.java:547)at com.office.framework.config.MyBatisConfig.sqlSessionFactory(MyBatisConfig.java:106)at com.office.framework.config.MyBatisConfig$$EnhancerBySpringCGLIB$$e8817d46.CGLIB$sqlSessionFactory$0(<generated>)at com.office.framework.config.MyBatisConfig$$EnhancerBySpringCGLIB$$e8817d46$$FastClassBySpringCGLIB$$2a3dbd36.invoke(<generated>)at org.springframework.cglib.proxy.MethodProxy.invokeSuper(MethodProxy.java:244)at org.springframework.context.annotation.ConfigurationClassEnhancer$BeanMethodInterceptor.intercept(ConfigurationClassEnhancer.java:363)at com.office.framework.config.MyBatisConfig$$EnhancerBySpringCGLIB$$e8817d46.sqlSessionFactory(<generated>)at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.lang.reflect.Method.invoke(Method.java:498)at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)... 102 common frames omitted
Caused by: org.apache.ibatis.builder.BuilderException: Error creating document instance. Cause: org.xml.sax.SAXParseException; lineNumber: 47; columnNumber: 69; 与元素类型 "if" 相关联的 "test" 属性值不能包含 '<' 字符。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 org.mybatis.spring.SqlSessionFactoryBean.buildSqlSessionFactory(SqlSessionFactoryBean.java:520)... 115 common frames omitted
Caused by: org.xml.sax.SAXParseException: 与元素类型 "if" 相关联的 "test" 属性值不能包含 '<' 字符。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:400)at com.sun.org.apache.xerces.internal.impl.XMLErrorReporter.reportError(XMLErrorReporter.java:327)at com.sun.org.apache.xerces.internal.impl.XMLScanner.reportFatalError(XMLScanner.java:1472)at com.sun.org.apache.xerces.internal.impl.XMLScanner.scanAttributeValue(XMLScanner.java:944)at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanAttribute(XMLDocumentFragmentScannerImpl.java:1548)at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanStartElement(XMLDocumentFragmentScannerImpl.java:1315)at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl$FragmentContentDriver.next(XMLDocumentFragmentScannerImpl.java:2784)at com.sun.org.apache.xerces.internal.impl.XMLDocumentScannerImpl.next(XMLDocumentScannerImpl.java:602)at com.sun.org.apache.xerces.internal.impl.XMLDocumentFragmentScannerImpl.scanDocument(XMLDocumentFragmentScannerImpl.java:505)at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:841)at com.sun.org.apache.xerces.internal.parsers.XML11Configuration.parse(XML11Configuration.java:770)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:339)at org.apache.ibatis.parsing.XPathParser.createDocument(XPathParser.java:257)... 118 common frames omitted
分析
上述错误信息可以定位问题为:
- mybatis 的 mapper xml 文件有错误
- xml 文件读取错误
- 特殊字符
<
不能正确 处理
嗯,既然如此,将特殊字符转义。
ps:对于xml的特殊字符有两种处理方法,一个是转移,一个是用<![CDATA[]]>
包裹。上面的问题只能转义。
XML转义字符
&(逻辑与) &
<(小于) <
>(大于) >
"(双引号) "
'(单引号) '
举例:
SELECT * FROM user WHERE age <= 30 AND age >= 18
改正:
<select id="selectxxxList" parameterType="map" resultMap="xxxResult">...<if test="statusList != null and statusList.size() > 0" >and status in <foreach item="item" collection="statusList" open="(" separator="," close=")">#{item}</foreach></if><if test="statusList == null or statusList.size() <= 0" >and status is null</if></select>
【mybatis】 “if“ 相关联的 “test“ 属性值不能包含 ‘<‘ 字符相关推荐
- Mybatis一对多关联查询,返回值Map,字段自动映射
功能描述 由于查询字段和表名都要支持动态配置,故查询返回值需要为List<Map<String,Object>>,不定义值对象. 查询结果列需要支持自动映射,不配置类属性和数据 ...
- 13、mybatis多表关联查询级联属性
文章目录 1.创建表结构 2.EmployeeMapper接口 3.EmployeeMapper.xml 4.Test 1.创建表结构 CREATE TABLE `mybatis`.`dept` (` ...
- js获取对象数组中指定属性值对象_3分钟学会操作JavaScript内置对象,快来试试吧...
1 - 内置对象 1.1 内置对象 JavaScript 中的对象分为3种:自定义对象 .内置对象. 浏览器对象. 前面两种对象是JS 基础 内容,属于 ECMAScript: 第三个浏览器对象属于 ...
- [css] 说说sroll-snap-type属性的运用场景有哪些?相关联的属性还有哪些?
[css] 说说sroll-snap-type属性的运用场景有哪些?相关联的属性还有哪些? 使用 sroll-snap-type 优化滚动 根据 CSS Scroll Snap Module Leve ...
- IDE工具(27) idea点击箭头快速切换到相关联的类位置 (Free MyBatis插件)
效果如下图: 当我们点击箭头的时候,会快速切换到我们相关联的类位置,就不用再像以前一样还要去找 而 Free MyBatis是一款让我们操作更加方便的插件,你值得拥有哦~~~ idea 选择 File ...
- CSS将样式规则与HTML元素相关联
CSS通过将规则与HTML元素相关联的方式来工作,这些规则用来控制指定元素的内容如何显示. 一条CSS规则包含两个部分:一个选择器和一条声明. 示例: P{ ------- ----- ...
- 0X8009310B (ASN:276) win7安装证书时出现错误消息:找不到与此证书文件相关联的证书申请微软官方文档
原文:http://support.microsoft.com/kb/959216#top 您尝试通过使用 IIS 7.0 管理器安装证书时出现错误消息:"找不到与此证书文件相关联的证书申请 ...
- 用户 'sa' 登录失败。原因: 未与信任 SQL Server 连接相关联
message: 用户 'sa' 登录失败.原因: 未与信任 SQL Server 连接相关联.这个问题该如何解决?=============一.控制面板->服务->MS SQL SERV ...
- dcom无法在此计算机运行,DCOM遇到错误“无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动”的解决...
关键字:DCOM 遇到错误"无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动. ",试图以参数""启动服务 helpsvc 以运行服务器: {833E ...
最新文章
- PVD与CVD性能比较
- FESCAR:阿里重磅开源分布式事务解决方案
- Andoid自定义View的OnMeasure详解和自定义属性
- CentOS 初体验七:常用命令
- java 文件分隔_java 实现大文件分隔成多个小文件
- 在Android应用中使用Pull解析XML文件(传智播客视频笔记)
- AI算法连载22:统计之边际概率推断
- 大型网站技术架构(五)--网站高可用架构(转)
- 诺基亚9.3 PureView或再度跳票:搭载高通骁龙875明年发布
- div css将文字居中显示图片,css文字居中、图片居中、div居中解决方案
- 常用js(javascript)函数
- 安卓开源电子书 阅读器_4个适用于Android的开源电子书阅读器
- Ubuntu 安装 OpenCV 教程 【slam14讲行不通可以看看】
- laypage 独立控件使用 laypage 不出总页数
- win11怎么关闭触控板?win11关闭触控板的三种解决方法
- 【渝粤题库】陕西师范大学151113 财经法规与职业道德
- win10怎么放计算机在桌面,Win10我的电脑怎么放在桌面上?Win10桌面显示我的电脑方法图解...
- 蓝桥七届 凑算式 JAVA
- 美通社日历 | 会展及重要事件信息、企业财报发布,节假日备忘(3月22日—3月28日)...
- [Samuel Ko]——我的2020年回顾