处理大于小于号的方法:

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. 分析laravel的核心日志类

    首先是容器 log对应的是application这个容器 首先我们查看如何获取这个日志类,我们来到\storage\app.php中找到application这个容器,点进去, 我们来到了 点击这个跳 ...

  2. LCD驱动分析(一)字符设备驱动框架分析

    参考:S3C2440 LCD驱动(FrameBuffer)实例开发<一>   S3C2440 LCD驱动(FrameBuffer)实例开发<二> LCD驱动也是字符设备驱动,也 ...

  3. ACM-ICPC 2018 南京赛区网络预赛 L. Magical Girl Haze

    262144K   There are NN cities in the country, and MM directional roads from uu to v(1\le u, v\le n)v ...

  4. tomcat启动后 404 页面无法访问

    如果修改端口后还不能访问,先关闭tomcat, 在bin目录下命令 ./shutdown.sh 找到80进程  netstat -an | grep 80 杀死80进程 ps -ef | grep h ...

  5. lua-helloworld

    write script file, a.lua: #!/usr/bin/lua print("hello world!") add excutable prperty to th ...

  6. 【C#】堆、栈和堆栈的区别

    导读:今天看视频,就看到了堆.栈这一块了.记得当年初相见(VB视频),劈头盖脸一阵蒙,什么都不知道,那时候师傅叫我挂起来,说我随着学习的进度,慢慢的就会懂了.现在,学到了这里,想着自己对自己从前的问题 ...

  7. [POJ1143]Number Game

    [POJ1143]Number Game 试题描述 Christine and Matt are playing an exciting game they just invented: the Nu ...

  8. BZOJ3261 最大异或和 【可持久化trie树】

    题目 给定一个非负整数序列{a},初始长度为N. 有M个操作,有以下两种操作类型: 1.Ax:添加操作,表示在序列末尾添加一个数x,序列的长度N+1. 2.Qlrx:询问操作,你需要找到一个位置p,满 ...

  9. 算法复习——bitset(bzoj3687简单题)

    题目: Description 小呆开始研究集合论了,他提出了关于一个数集四个问题:1.子集的异或和的算术和.2.子集的异或和的异或和.3.子集的算术和的算术和.4.子集的算术和的异或和.    目前 ...

  10. json格式前端显示

    使用angular可以稍加修改. [转]http://web.jobbole.com/82865/ function output(inp) { document.body.appendChild(d ...