• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
龙师傅文徒弟
博客园    首页    新随笔    联系   管理    订阅  订阅

为什么的Mapper文件中的"<"、">" 要转成“&lt ;”、“&gt ;”

mybatis的Mapper文件中的大于小于号,为什么要转成“< ;”、“> ;”,转义后的lt、gt又代表什么?

为什么的Mapper文件中的"<"、">" 要转成“&lt ;”、“&gt ;”

问题分析

mybatis中的mapper文件是xml文件,不允许出现类似“>”这样的字符,会与文件本身的标签"<xxx>"冲突,

就像mysql中有些关键字(如:select、insert等)不允许当做字段名,会引起冲突;

处理方式

1.用转义字符把>和<替换掉,使后台能够正常解析这个xml文件

XML中需要转义的字符有:

字段

符号

说明

&lt ;

<

小于号

&gt ;

>

大于号

&amp ;

&

和

&apos ;

'

单引号

&quot ;

"

双引号

原SQL

select * from table where createTime >'2019-10-10' and createTime <= '2019-10-20' 

修改后SQL:
select * from table where createTime &gt; '2019-10-10' and createTime &lt;= '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>

 

’另外“&lt ;”,“&gt ;”,“&ge ;”这些转移字符都是什么含义呢?

EQ: EQUAL → 等于

NE: NOT EQUAL → 不等于

GT: GREATER THAN → 大于 

LT : LESS THAN → 小于

GE: GREATER THAN OR EQUAL → 大于等于

LE: LESS THAN OR EQUAL → 小于等于

posted @ 2021-09-29 11:08  龙师傅文徒弟  阅读(2270)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3