在项目编译过程中,会出现如下错误

Caused by: org.apache.ibatis.builder.BuilderException: Error creating document instance.  Cause: org.xml.sax.SAXParseException; lineNumber: 693; columnNumber: 27; The content of elements must consist of well-formed character data or markup.at org.apache.ibatis.parsing.XPathParser.createDocument(XPathParser.java:263)at org.apache.ibatis.parsing.XPathParser.<init>(XPathParser.java:127)at org.apache.ibatis.builder.xml.XMLMapperBuilder.<init>(XMLMapperBuilder.java:81)at com.baomidou.mybatisplus.extension.spring.MybatisSqlSessionFactoryBean.buildSqlSessionFactory(MybatisSqlSessionFactoryBean.java:592)... 75 common frames omitted

根据错误提示信息(创建文档实例时出错。原因:xml异常),然后找到xml查看

<select id="findYesterdayOrderByGroupBatchId" resultType="com.touchealth.physical.bo.order.OrderBo">select*fromtrd_orderwhere order_state in (1, 2)and checkup_type = 2and created_time >= #{startTime}and created_time <=  #{endTime}and deleted_flag = 0and group_batch_id in<foreach collection="groupBatchIds" index="index" item="item" open="(" separator="," close=")">#{item}</foreach></select>

因为语句中有一个小于号“<”,在XML中,会被当成一个页面元素来解析,不会处理为mysql的SQL语句的组成部分

解决办法

1. 只需要对使用大于号, 小于号的地方进行转义即可, 其对应的关系如下表所示

2. 将需要使用特殊字符的SQL语句写在 <![CDATA[...]]> 中, 其中的特殊符号不进行解析

<![CDATA[]]>这个标记所包含的内容将表示为纯文本,比如<![CDATA[<]]>表示文本内容“<”。

最后,说说<![CDATA[]]>xml转移字符的关系,它们两个看起来是不是感觉功能重复了?

是的,它们的功能就是一样的,只是应用场景和需求有些不同:

  • <![CDATA[]]>不能适用所有情况,转义字符可以;
  • 对于短字符串<![CDATA[]]>写起来啰嗦,对于长字符串转义字符写起来可读性差;
  • <![CDATA[]]>表示xml解析器忽略解析,所以更快。

Mybatis xml中SQL处理小于号与大于号相关推荐

  1. Mybatis.xml中sql语句的转译

    Mybatis.xml中sql语句的转译

  2. mybatis.xml中sql编写规范

    一.越少的代码,越强悍的功能,xml里面应该6个sql语句就够用了,修改,维护成本很低,见下表 下载 英文名 方法名称 核心点 建议 insert 1.新增数据 如果是自增主键,应该返回主键ID de ...

  3. oracle大于号怎么用,解决MyBatis的mapper中SQL小于号或大于号报错-tag name expected

    通常写SQL我们都会在Navicat里面写好条件测试没问题之后才会把SQL放到mapper里面,有次我在写Oracle的分页的时候因为用到了<=符号,在Navicat测试的时候是没问题的,但是放 ...

  4. 转载的一片关于Mapper.xml中sql的相关技术点,供以后自己慢慢学习之用

    1      Mapper.xml映射文件 需掌握动态sql(重点掌握)和pojo对象 Mapper.xml映射文件中定义了操作数据库的sql,每个sql是一个statement,映射文件是mybat ...

  5. C++中比较大小的表达式中,小于号和大于号都是不能连着打的,要用连接起来

    C++中比较大小的表达式中,小于号和大于号都是不能连着打的,要用&&连接起来,这一点不同于日常的数学表达式,例如if(a<b<c)或者if(0<a<100)都是 ...

  6. mybatis XML 中<if>、<choose>、<when>、<otherwise>等标签的使用?多条件查询该怎么处理?

    mybatis XML 中if.choose.when.otherwise等标签的使用 一般使用在多条查询,虽然也可以通过注解写,我比较菜,我不会. 一般多条查询怎么解决? 1.如果是单表间的多条件查 ...

  7. Mybatis xml中配置一对一关系association一对多关系collection

    Mybatis xml中配置一对一关系association&一对多关系collection 今天在配置一对一关系映射以及一对多关系映射的时候,把collection中应该使用的ofType配 ...

  8. c语言大于号和尖括号是一个么,HTML的标识不全是封装在由小于号和大于号构成的一对尖括号之中。()...

    HTML的标识不全是封装在由小于号和大于号构成的一对尖括号之中.() 更多相关问题 如下图所示,单摆在竖直平面左右摆动,当从A点运动到B点的过程中,它的动能:[ ]A.一直增大 B.一直减小 C.先减 ...

  9. HTML-常见的特殊字符,特殊字符的转义,和号(且符号)、小于号、大于号、乘、除、人民币符号、版权符等

    在前端开发中,一些特殊的符号,有时在 HTML 里面不方便直接使用, 此时就可以使用下面的代码替代一些特殊符号:在 HTML 页面中写入这些代码后,浏览器会自动将其转成对应的特殊字符 特殊字符 描述 ...

最新文章

  1. Java集合TreeSet
  2. 在2018年iOS应用程序发展趋势
  3. python 子图大小_Python | 图的大小
  4. spring 事务隔离级别和传播行为_Java工程师面试1000题146-Spring数据库事务传播属性和隔离级别...
  5. android handler同步,android解决:使用多线程和Handler同步更新UI
  6. attribute property --- jquery attr() prop()
  7. [转] - 浅谈数据分析和数据建模
  8. Ubuntu安装gcc-7.3.0
  9. Python爬虫爬取豆瓣图书的信息和封面,放入MySQL数据库中。
  10. STM32解析美的空调红外遥控器
  11. JAVA网络协同办公自动化
  12. Unity 动画方面的优化
  13. Linux命令之timeout
  14. signature=daa3bbe3ad9a7c162ba9d98f8d9e7530,解决select2插件下拉搜索框,输入拼音能够匹配中文汉字的问题...
  15. 钩陈/ 为什么会忍不住复训蟒营™
  16. 服务器厂商visio图标网站,云服务器visio图标
  17. 编程资源:看雪大礼包2010
  18. 梯度下降、牛顿法、高斯牛顿L-M算法比较
  19. 矩阵连乘求最小连乘次数(动态规划)
  20. 施努卡:锂电池负极材料生产线(电池正极材料生产工艺)

热门文章

  1. Canvas的渲染先后顺序
  2. [论文阅读笔记53]2021深度神经方法的关系三元组抽取综述
  3. 开个水果店要投资多少钱,开水果店投资
  4. 波斯顿房价预测线型回归
  5. IBM SPSS Statistics编辑数据的基本操作
  6. vue 把组件方法暴露到window对象中
  7. BGP的IBGP邻居和路由详解,理论+实战,一分钟掌握
  8. 2022年10月各大学网络教育统考大学英语B考试复习题库及辅导
  9. 二叉树树叶统计算法详解
  10. 云计算领域中边缘云安全有哪些挑战?