为什么的Mapper文件中的"<"、">" 要转成“< ;”、“> ;”
mybatis的Mapper文件中的大于小于号,为什么要转成“< ;”、“> ;”,转义后的lt、gt又代表什么?
为什么的Mapper文件中的"<"、">" 要转成“< ;”、“> ;”
问题分析
mybatis中的mapper文件是xml文件,不允许出现类似“>”这样的字符,会与文件本身的标签"<xxx>"冲突,
就像mysql中有些关键字(如:select、insert等)不允许当做字段名,会引起冲突;
处理方式
1.用转义字符把>和<替换掉,使后台能够正常解析这个xml文件
XML中需要转义的字符有:
字段 |
符号 |
说明 |
---|---|---|
< ; |
< |
小于号 |
> ; |
> |
大于号 |
& ; |
& |
和 |
&apos ; |
' |
单引号 |
" ; |
" |
双引号 |
原SQL
select * from table where createTime >'2019-10-10' and createTime <= '2019-10-20'
修改后SQL:
select * from table where createTime > '2019-10-10' and createTime <= '2019-10-20'
2.增加声明标志:<![CDATA[]]>
被<![CDATA[]]>这个标记所包含的内容将表示为纯文本,后台会原样解析并执行
SELECT *FROM table <where> <!-- 录入日期 范围 --> <if test="date_st != '' and date_ed != ''"> <![CDATA[ and createTime >= #{date_st} and createTime =< #{date_ed} ]]> </if> </where>
’另外“< ;”,“> ;”,“&ge ;”这些转移字符都是什么含义呢?
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通