mybatis xml 中的 大于、小于、等于

*.xml 中使用常规的 < > = <= >= 会与xml的语法存在冲突

方法一:使用xml 原生转义的方式进行转义

字符名称sql符号转义字符
大于号>&gt;
小于号<&lt;
不等于<>&lt;&gt;
大于等于号>=&gt;=
小于等于号<=&lt;=
&&amp;
单引号&apos;
双引号"&quot;

简单代码示例:

sql语句
select * from user where `age` <= 10
xml 语句
<select id="getUser"  resultType="userInfo">
    select * from user 
        where `age`  &lt;= #{age}
</select>

写法注意

  • 转义字符 之前不能有空格,例如:& gt; 或者 &g t; 都是错误的
  • 转义字符 必须以; 结尾
  • 转义字符 是区分大小写的
  • 单独出现的&不会被认为是转义的开始
  • 转义字符 中是没有 = 所以 大于等于 在写的时候,=直接拼接在转义字符结尾的后面

注意【MarkDown】小知识

以上转义符号在 【MarkDown】 中也同样试用会被转义,在【MarkDown】文档中想要保留展示这些转移符号,需要在转义符前面写上一个 '\',例如:\&gt;

方法二:使用 <![CDATA[ 内容 ]]>

在 xml 格式中,当遇到 <![CDATA[ ]]> 这种格式时,会把方块中的内容直接输出,不做任何的解析转义

字符名称字符串符号示例代码
大于号><![CDATA[ > ]]>
小于号<<![CDATA[ < ]]>
不等于<><![CDATA[ <> ]]>
大于等于号>=<![CDATA[ >= ]]>
小于等于号<=<![CDATA[ <= ]]>

简单代码示例:

sql语句
select * from user where `age` <= 10
xml 语句
<select id="getUser"  resultType="userInfo">
    select * from user 
        where `age`  <![CDATA[ <= ]]>  #{age}
</select>
<select id="getUser"  resultType="userInfo">
    select * from user 
        <![CDATA[ where `age` <= #{age} ]]>
</select>

写法注意

  • <![CDATA[ 内容 ]]> 中的内容 部分,不能再包含 <![CDATA[]]> ,也不能嵌套使用
  • <![CDATA[]]> 是一个整体,处理放置内容文本的部分之外,不能出现 空格 或者 换行

两种方法对比

  • <![CDATA[]]>转义符 来的繁琐
  • <![CDATA[]]> 表示xml解析器忽略解析,相对比速度会比较快
  • 个人比较喜欢使用 <![CDATA[]]> ,因为我记不住那个转义的意思 😁
Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐