Mybatis xml中SQL处理小于号与大于号
在项目编译过程中,会出现如下错误
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处理小于号与大于号相关推荐
- Mybatis.xml中sql语句的转译
Mybatis.xml中sql语句的转译
- mybatis.xml中sql编写规范
一.越少的代码,越强悍的功能,xml里面应该6个sql语句就够用了,修改,维护成本很低,见下表 下载 英文名 方法名称 核心点 建议 insert 1.新增数据 如果是自增主键,应该返回主键ID de ...
- oracle大于号怎么用,解决MyBatis的mapper中SQL小于号或大于号报错-tag name expected
通常写SQL我们都会在Navicat里面写好条件测试没问题之后才会把SQL放到mapper里面,有次我在写Oracle的分页的时候因为用到了<=符号,在Navicat测试的时候是没问题的,但是放 ...
- 转载的一片关于Mapper.xml中sql的相关技术点,供以后自己慢慢学习之用
1 Mapper.xml映射文件 需掌握动态sql(重点掌握)和pojo对象 Mapper.xml映射文件中定义了操作数据库的sql,每个sql是一个statement,映射文件是mybat ...
- C++中比较大小的表达式中,小于号和大于号都是不能连着打的,要用连接起来
C++中比较大小的表达式中,小于号和大于号都是不能连着打的,要用&&连接起来,这一点不同于日常的数学表达式,例如if(a<b<c)或者if(0<a<100)都是 ...
- mybatis XML 中<if>、<choose>、<when>、<otherwise>等标签的使用?多条件查询该怎么处理?
mybatis XML 中if.choose.when.otherwise等标签的使用 一般使用在多条查询,虽然也可以通过注解写,我比较菜,我不会. 一般多条查询怎么解决? 1.如果是单表间的多条件查 ...
- Mybatis xml中配置一对一关系association一对多关系collection
Mybatis xml中配置一对一关系association&一对多关系collection 今天在配置一对一关系映射以及一对多关系映射的时候,把collection中应该使用的ofType配 ...
- c语言大于号和尖括号是一个么,HTML的标识不全是封装在由小于号和大于号构成的一对尖括号之中。()...
HTML的标识不全是封装在由小于号和大于号构成的一对尖括号之中.() 更多相关问题 如下图所示,单摆在竖直平面左右摆动,当从A点运动到B点的过程中,它的动能:[ ]A.一直增大 B.一直减小 C.先减 ...
- HTML-常见的特殊字符,特殊字符的转义,和号(且符号)、小于号、大于号、乘、除、人民币符号、版权符等
在前端开发中,一些特殊的符号,有时在 HTML 里面不方便直接使用, 此时就可以使用下面的代码替代一些特殊符号:在 HTML 页面中写入这些代码后,浏览器会自动将其转成对应的特殊字符 特殊字符 描述 ...
最新文章
- Java集合TreeSet
- 在2018年iOS应用程序发展趋势
- python 子图大小_Python | 图的大小
- spring 事务隔离级别和传播行为_Java工程师面试1000题146-Spring数据库事务传播属性和隔离级别...
- android handler同步,android解决:使用多线程和Handler同步更新UI
- attribute property --- jquery attr() prop()
- [转] - 浅谈数据分析和数据建模
- Ubuntu安装gcc-7.3.0
- Python爬虫爬取豆瓣图书的信息和封面,放入MySQL数据库中。
- STM32解析美的空调红外遥控器
- JAVA网络协同办公自动化
- Unity 动画方面的优化
- Linux命令之timeout
- signature=daa3bbe3ad9a7c162ba9d98f8d9e7530,解决select2插件下拉搜索框,输入拼音能够匹配中文汉字的问题...
- 钩陈/ 为什么会忍不住复训蟒营™
- 服务器厂商visio图标网站,云服务器visio图标
- 编程资源:看雪大礼包2010
- 梯度下降、牛顿法、高斯牛顿L-M算法比较
- 矩阵连乘求最小连乘次数(动态规划)
- 施努卡:锂电池负极材料生产线(电池正极材料生产工艺)