处理大于小于号的方法:

https://www.cnblogs.com/winner-0715/p/6132755.html

第一种方法:
用转义字符把">"和"<"替换掉,就没有问题了。

  1. <if test="startTime != null ">
  2. AND order_date &gt;= #{startTime,jdbcType=DATE}
  3. </if>
  4. <if test="endTime != null ">
  5. AND order_date &lt;= #{endTime,jdbcType=DATE}
  6. </if>

注意下,这里的startTime,endTime都是Date类型的~

附:XML转义字符

&lt;      <    小于号   
&gt;      >    大于号   
&amp;      &    和   
&apos;      ’    单引号   
&quot;      "    双引号   

第二种方法:
因为这个是xml格式的,所以不允许出现类似">"这样的字符,但是可以使用<![CDATA[ ]]>符号进行说明,将此类符号不进行解析 
mapper文件示例代码

  1. <if test="startTime != null ">
  2. AND <![CDATA[ order_date >= #{startTime,jdbcType=DATE} ]]>
  3. </if>
  4. <if test="endTime != null ">
  5. AND <![CDATA[ order_date <= #{endTime,jdbcType=DATE} ]]>
  6. </if>

====================================

附带问题:

使用情况:mybatis  xml中写的mapper  对接的是postgresql数据库

问题:在同一个项目中不同的mapper.xml文件中,分别出现了>= 和<=的比较运算符,但是在一个xml中需要额外处理才能使用,一个xml文件中不需要额外处理>或者<符号可以直接使用

下面附上两个xml文件代码和截图,

1.

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
  3. <mapper namespace="com.rollong.chinatower.server.persistence.mapper.FinanceReportMapper">
  4. <resultMap id="financeBriefDataResultMap"
  5. type="com.rollong.chinatower.server.api.payload.finance.FinanceBriefData">
  6. <id property="id" column="id"/>
  7. </resultMap>
  8. <select id="search" resultMap="financeBriefDataResultMap">
  9. SELECT
  10. *
  11. FROM
  12. (
  13. SELECT
  14. ( CAST ( partner.id AS VARCHAR ) || '@partner' ) AS ID,
  15. partner.id AS partnerId,
  16. project.id AS projectId,
  17. construction.id AS constructionId,
  18. NULL AS takerId,
  19. NULL AS maintenanceId,
  20. count(report.id) as reportsCount,
  21. sum(report.amount) as totalAmount,
  22. max(report.updated_at) as reportLatestUpdatedAt
  23. FROM
  24. "project"."project_construction_partners" AS partner
  25. LEFT JOIN "project"."project_construction" AS construction ON partner.construction_id = construction.id
  26. LEFT JOIN "project"."projects" AS project ON construction.project_id = project.id
  27. LEFT JOIN "finance"."finance_reports" as report on partner.id = report.partner_id
  28. WHERE
  29. #{isConstruction} = TRUE
  30. AND construction.deleted_at IS NULL
  31. <if test="null != partnerType">
  32. AND partner.name = '${partnerType}'
  33. </if>
  34. <if test="null != provinceId">
  35. AND project.province_id = #{provinceId}
  36. </if>
  37. <if test="null != cityId">
  38. AND project.city_id = #{cityId}
  39. </if>
  40. <if test="null != districtId">
  41. AND project.district_id = #{districtId}
  42. </if>
  43. <if test="null != subCompanyId">
  44. AND project.sub_company_id = #{subCompanyId}
  45. </if>
  46. <if test="null != thirdPartCompanyId">
  47. AND partner.third_part_id = #{thirdPartCompanyId}
  48. </if>
  49. <if test="null != leaderEmployeeId">
  50. AND partner.leader_employee_id = #{leaderEmployeeId}
  51. </if>
  52. <if test="null != workerEmployeeId">
  53. AND exists(
  54. select 1 from "third_part"."worker_involved_constructions" as involved
  55. where involved.worker_id = #{workerEmployeeId} AND involved.project_partner_id = partner.id
  56. )
  57. </if>
  58. <if test="null != reportStatus">
  59. AND exists(
  60. select 1 from "finance"."finance_reports" as r
  61. where r.partner_id = partner.id
  62. <choose>
  63. <when test="'Submit' == reportStatus">
  64. and r.approved_at is null and r.rejected_at is null and r.paid_at is null
  65. </when>
  66. <when test="'Approved' == reportStatus">
  67. and r.approved_at is not null and r.rejected_at is null and r.paid_at is null
  68. </when>
  69. <when test="'Rejected' == reportStatus">
  70. and r.approved_at is null and r.rejected_at is not null and r.paid_at is null
  71. </when>
  72. <when test="'Paid' == reportStatus">
  73. and r.paid_at is not null
  74. </when>
  75. </choose>
  76. )
  77. </if>
  78. <if test="null != keyword">
  79. AND project.name like #{keyword}
  80. </if>
  81. GROUP BY partner.id,project.id,construction.id
  82. UNION
  83. SELECT
  84. ( CAST ( taker.ID AS VARCHAR ) || '@maintenance' ) AS ID,
  85. NULL AS partnerId,
  86. project.ID AS projectId,
  87. NULL AS constructionId,
  88. taker.ID AS takerId,
  89. maintenance.ID AS maintenanceId,
  90. count(report.id) as reportsCount,
  91. sum(report.amount) as totalAmount,
  92. max(report.updated_at) as reportLatestUpdatedAt
  93. FROM
  94. "project"."project_maintenance_takers" AS taker
  95. LEFT JOIN "project"."project_maintenance" AS maintenance ON taker.maintenance_id = maintenance.id
  96. LEFT JOIN "project"."projects" AS project ON maintenance.project_id = project.id
  97. LEFT JOIN "finance"."finance_reports" as report on taker.id = report.taker_id
  98. WHERE
  99. #{isMaintenance} = TRUE
  100. AND maintenance.deleted_at IS NULL
  101. AND taker.deleted_at IS NULL
  102. <if test="null != provinceId">
  103. AND project.province_id = #{provinceId}
  104. </if>
  105. <if test="null != cityId">
  106. AND project.city_id = #{cityId}
  107. </if>
  108. <if test="null != districtId">
  109. AND project.district_id = #{districtId}
  110. </if>
  111. <if test="null != subCompanyId">
  112. AND project.sub_company_id = #{subCompanyId}
  113. </if>
  114. <if test="null != thirdPartCompanyId">
  115. AND taker.third_part_id = #{thirdPartCompanyId}
  116. </if>
  117. <if test="null != leaderEmployeeId">
  118. AND taker.leader_employee_id = #{leaderEmployeeId}
  119. </if>
  120. <if test="null != workerEmployeeId">
  121. AND exists(
  122. select 1 from "third_part"."worker_involved_maintenance" as involved
  123. where involved.worker_id = #{workerEmployeeId} AND involved.taker_id = taker.id
  124. )
  125. </if>
  126. <if test="null != reportStatus">
  127. AND exists(
  128. select 1 from "finance"."finance_reports" as r
  129. where r.taker_id = taker.id
  130. <choose>
  131. <when test="'Submit' == reportStatus">
  132. and r.approved_at is null and r.rejected_at is null and r.paid_at is null
  133. </when>
  134. <when test="'Approved' == reportStatus">
  135. and r.approved_at is not null and r.rejected_at is null and r.paid_at is null
  136. </when>
  137. <when test="'Rejected' == reportStatus">
  138. and r.approved_at is null and r.rejected_at is not null and r.paid_at is null
  139. </when>
  140. <when test="'Paid' == reportStatus">
  141. and r.paid_at is not null
  142. </when>
  143. </choose>
  144. )
  145. </if>
  146. <if test="null != keyword">
  147. AND project.name like #{keyword}
  148. </if>
  149. GROUP BY maintenance.id,project.id,taker.id
  150. ) AS table_all
  151. WHERE TRUE
  152. <if test="minReportsCount != null">
  153. AND table_all.reportsCount &gt;= #{minReportsCount}
  154. </if>
  155. <if test="maxReportsCount != null">
  156. AND table_all.reportsCount &lt;= #{maxReportsCount}
  157. </if>
  158. <choose>
  159. <when test="sort == 'Latest'">
  160. ORDER BY table_all.reportLatestUpdatedAt DESC
  161. </when>
  162. <when test="sort == 'AmountAsc'">
  163. ORDER BY table_all.totalAmount ASC
  164. </when>
  165. <when test="sort == 'AmountDesc'">
  166. ORDER BY table_all.totalAmount DESC
  167. </when>
  168. </choose>
  169. </select>
  170. </mapper>

2.

  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
  3. <mapper namespace="com.rollong.chinatower.server.persistence.mapper.OrderMealTimeMapper">
  4. <resultMap id="OrderMealResult"
  5. type="com.rollong.chinatower.server.api.payload.canteen.OrderMealTime" autoMapping="true">
  6. <result property="years" column="years"/>
  7. <result property="months" column="months"/>
  8. <result property="days" column="days"/>
  9. <result property="counts" column="counts"/>
  10. <result property="checkOut" column="checkOut"/>
  11. </resultMap>
  12. <select id="search" resultMap="OrderMealResult">
  13. SELECT
  14. ors.year_meal AS years,
  15. ors.month_meal AS months,
  16. ors.day_meal AS days,
  17. SUM (ors.counts) AS counts,
  18. SUM (ors.checkd_out) AS checkOut
  19. FROM canteen.order_meal ors
  20. WHERE TRUE
  21. <if test="null != canteenId">
  22. AND ors.canteen_id = #{canteenId}
  23. </if>
  24. <if test=" null != startY and null != startM and null != startD" >
  25. AND <![CDATA[ (ors.year_meal *10000 + ors.month_meal *100 + ors.day_meal) >= (#{startY}*10000+#{startM}*100+#{startD}) ]]>
  26. </if>
  27. <if test=" null != endY and null != endM and null != endD" >
  28. AND <![CDATA[ (ors.year_meal *10000 + ors.month_meal *100 + ors.day_meal) <= (#{endY}*10000+#{endM}*100+#{endD}) ]]>
  29. </if>
  30. GROUP BY ors.year_meal,ors.month_meal,ors.day_meal
  31. </select>
  32. </mapper>

【究竟是xml的问题/还是对接的数据库的问题/还是数据库中对于某些类型字段处理不一样】

如果有兴趣或者刚好知道,遇到过这种情况的 希望大家能给个反馈,多多交流!!

【Mybatis】 Mybatis在xml文件中处理大于号小于号的方法【问题】的更多相关文章

  1. MyBatis 3在XML文件中处理大于号小于号(<>)的方法(转)

    说明:以下方式支持XML和注解的方式. 一. 用了转义字符把>和<替换掉. AND start_date <= CURRENT_DATE AND end_date >= CUR ...

  2. Mybatis在xml文件中处理大于、小于、不等于号的方法

    在mapper.xml使用大于.小于等符号会和xml语法冲突,解决冲突有两种方式. 方法一: 使用转义字符: 字符名称 字符符号 转义字符 大于号 > > 小于号 < < 与 ...

  3. maven的setting.xml文件中只配置本地仓库路径的方法

    maven的setting.xml文件中只配置本地仓库路径的方法 即:settings标签下只有一个 localRepository标签,其他全部注释掉即可 <?xml version=&quo ...

  4. mybatis 基础(二) xml文件中的其他知识点

    mybatis xml文件中一些标签的使用 此标签主要用作 配置 "别名" 如果实体类与数据库中字段名在不区分大小写的情况下相同的话, 那就不需要配置resultMap,因为mys ...

  5. 转!!mybatis在xml文件中处理大于号小于号的方法

    第一种方法: 用了转义字符把>和<替换掉,然后就没有问题了. SELECT * FROM test WHERE 1 = 1 AND start_date  <= CURRENT_DA ...

  6. Mybatis在xml文件中处理大于号小于号的方法

    第一种方法:用了转义字符把">"和"<"替换掉,然后就没有问题了. AND start_date <= CURRENT_DATE AND en ...

  7. 【转】mybatis在xml文件中处理大于号小于号的方法

    http://blog.csdn.net/zheng0518/article/details/10449549 第一种方法: 用了转义字符把>和<替换掉,然后就没有问题了. SELECT ...

  8. 在AndroidManifest.xml文件中设置Android程序的启动界面方法

    从网上搜集了一堆的Android代码,比如Android的Login程序和Android的Helloworld程序,但是却总不能正确运行一个正确的程序,郁闷了很久,终于在一次一次的测试后成功的在And ...

  9. iBATIS sql(XML)中的大于、小于、like等符号写法

    其实就是xml的特殊符号,因为它的配置就是xml,所以可以用下面这种写法转义 <          <     >          >      <>   < ...

随机推荐

  1. 【线段树 集合hash】bzoj4373: 算术天才⑨与等差数列

    hash大法好(@ARZhu):大数相乘及时取模真的是件麻烦事情 Description 算术天才⑨非常喜欢和等差数列玩耍.有一天,他给了你一个长度为n的序列,其中第i个数为a[i].他想考考你,每次 ...

  2. vue2.0的基本特性

    本文目前总结的特性如下1.侦听属性和计算属性2.class的绑定3.条件渲染时的注意事项4.v-if和v-for同时使用的注意事项5.插槽6.ref,父组件调用子组件的另一种方式7.<keep- ...

  3. mysql 慢查询日志 pt-query-digest 工具安装

    介绍:pt-query-digest是用于分析mysql慢查询的一个工具,它可以分析binlog.General log.slowlog,也可以通过SHOWPROCESSLIST或者通过tcpdump ...

  4. Python基本运算符和流程控制

    常量 常量即不可改变的量,在Python中不存在常量,我们只能逻辑上规定一个常量并不去修改它,通常用全大写字母表示. 基本运算符之二 算术运算 运算符 说明 ** 幂运算 *, /, //, % 乘. ...

  5. Ubuntu 14.04在虚拟机上的桥接模式下设置静态IP

    1.虚拟机--->虚拟机设置 将虚拟机设置为桥接模式 2.查看window 网卡以及IP信息 cmd下输入 ipconfig -all 可以看到,我的网卡为Realtek PCIe GBE Fa ...

  6. leetcode刷题——查找

    知识点 备忘-必备算法 题目 顺序查找 二分查找 树表搜索 广度优先搜索算法(BFS) 深度优先搜索算法(DFS) 回溯(Backtracking) 题解 CS-Notes Algorithm_Int ...

  7. 【05】project board

    GitHub 上的 project board 我总是用 Jira 做大项目,独立项目用 Trello,这两者我都很喜欢. 后来我知道,GitHub 也有类似的 project board: 我个人为 ...

  8. cf886d Restoration of string

    明确几点 假设有串 ab,那么 a 后头必须是 b,b 前头必须是 a,否则就不是最频繁的了. 不可成环,aba是非法的. #include <iostream> #include < ...

  9. 大数据学习——Storm+Kafka+Redis整合

    1 pom.xml <?xml version="1.0" encoding="UTF-8"?> <project xmlns="h ...

  10. python3将unicode转化成中文输出

    a = [] with open('douban.json','r') as f: for i in f.readlines(): a.append((i.encode('utf8').decode( ...