前言

  • 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转义字符

&(逻辑与)  &amp;
<(小于)    &lt;
>(大于)    &gt;
"(双引号)  &quot;
'(单引号)  &apos;

举例:

SELECT * FROM  user WHERE  age  &lt;= 30 AND age &gt;= 18

改正:

    <select id="selectxxxList" parameterType="map" resultMap="xxxResult">...<if test="statusList != null and statusList.size() &gt; 0" >and status in <foreach item="item" collection="statusList" open="(" separator="," close=")">#{item}</foreach></if><if test="statusList == null or statusList.size() &lt;= 0" >and status is null</if></select>

【mybatis】 “if“ 相关联的 “test“ 属性值不能包含 ‘<‘ 字符相关推荐

  1. Mybatis一对多关联查询,返回值Map,字段自动映射

    功能描述 由于查询字段和表名都要支持动态配置,故查询返回值需要为List<Map<String,Object>>,不定义值对象. 查询结果列需要支持自动映射,不配置类属性和数据 ...

  2. 13、mybatis多表关联查询级联属性

    文章目录 1.创建表结构 2.EmployeeMapper接口 3.EmployeeMapper.xml 4.Test 1.创建表结构 CREATE TABLE `mybatis`.`dept` (` ...

  3. js获取对象数组中指定属性值对象_3分钟学会操作JavaScript内置对象,快来试试吧...

    1 - 内置对象 1.1 内置对象 JavaScript 中的对象分为3种:自定义对象 .内置对象. 浏览器对象. 前面两种对象是JS 基础 内容,属于 ECMAScript: 第三个浏览器对象属于 ...

  4. [css] 说说sroll-snap-type属性的运用场景有哪些?相关联的属性还有哪些?

    [css] 说说sroll-snap-type属性的运用场景有哪些?相关联的属性还有哪些? 使用 sroll-snap-type 优化滚动 根据 CSS Scroll Snap Module Leve ...

  5. IDE工具(27) idea点击箭头快速切换到相关联的类位置 (Free MyBatis插件)

    效果如下图: 当我们点击箭头的时候,会快速切换到我们相关联的类位置,就不用再像以前一样还要去找 而 Free MyBatis是一款让我们操作更加方便的插件,你值得拥有哦~~~ idea 选择 File ...

  6. CSS将样式规则与HTML元素相关联

    CSS通过将规则与HTML元素相关联的方式来工作,这些规则用来控制指定元素的内容如何显示. 一条CSS规则包含两个部分:一个选择器和一条声明. 示例: P{         ------- ----- ...

  7. 0X8009310B (ASN:276) win7安装证书时出现错误消息:找不到与此证书文件相关联的证书申请微软官方文档

    原文:http://support.microsoft.com/kb/959216#top 您尝试通过使用 IIS 7.0 管理器安装证书时出现错误消息:"找不到与此证书文件相关联的证书申请 ...

  8. 用户 'sa' 登录失败。原因: 未与信任 SQL Server 连接相关联

    message: 用户 'sa' 登录失败.原因: 未与信任 SQL Server 连接相关联.这个问题该如何解决?=============一.控制面板->服务->MS SQL SERV ...

  9. dcom无法在此计算机运行,DCOM遇到错误“无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动”的解决...

    关键字:DCOM 遇到错误"无法启动服务,原因可能是已被禁用或与其相关联的设备没有启动. ",试图以参数""启动服务 helpsvc 以运行服务器: {833E ...

最新文章

  1. PVD与CVD性能比较
  2. FESCAR:阿里重磅开源分布式事务解决方案
  3. Andoid自定义View的OnMeasure详解和自定义属性
  4. CentOS 初体验七:常用命令
  5. java 文件分隔_java 实现大文件分隔成多个小文件
  6. 在Android应用中使用Pull解析XML文件(传智播客视频笔记)
  7. AI算法连载22:统计之边际概率推断
  8. 大型网站技术架构(五)--网站高可用架构(转)
  9. 诺基亚9.3 PureView或再度跳票:搭载高通骁龙875明年发布
  10. div css将文字居中显示图片,css文字居中、图片居中、div居中解决方案
  11. 常用js(javascript)函数
  12. 安卓开源电子书 阅读器_4个适用于Android的开源电子书阅读器
  13. Ubuntu 安装 OpenCV 教程 【slam14讲行不通可以看看】
  14. laypage 独立控件使用 laypage 不出总页数
  15. win11怎么关闭触控板?win11关闭触控板的三种解决方法
  16. 【渝粤题库】陕西师范大学151113 财经法规与职业道德
  17. win10怎么放计算机在桌面,Win10我的电脑怎么放在桌面上?Win10桌面显示我的电脑方法图解...
  18. 蓝桥七届 凑算式 JAVA
  19. 美通社日历 | 会展及重要事件信息、企业财报发布,节假日备忘(3月22日—3月28日)...
  20. [Samuel Ko]——我的2020年回顾

热门文章

  1. 亚信安全火力全开猎捕“坏兔子”,全歼详解
  2. 阿里云Redis (安装包安装篇)
  3. 《PC World》:Linux在桌面市场毫无长进 已经死亡
  4. 我的Ubuntu体验
  5. Web 2.0的个性化存储需求
  6. 模拟alert和confirm
  7. 使用Memcached提高.NET应用程序的性能
  8. Jquery操作Cookie取值错误的解决方法
  9. Request.InputStream 将数据作为XML数据发送
  10. 导出Excel表格时,如何把数据库表中的编号转换成配置文件中的汉字