热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

【Mybatis】Mybatis在xml文件中处理大于号小于号的方法【问题】

处理大于小于号的方法:https:www.cnblogs.comwinner-0715p6132755.html第一种方法:用转义字符把和


处理大于小于号的方法:


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


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



<if test&#61;"startTime !&#61; null ">
AND order_date &gt;&#61; #{startTime,jdbcType&#61;DATE}
if>
<if test&#61;"endTime !&#61; null ">
AND order_date &lt;&#61; #{endTime,jdbcType&#61;DATE}
if>


注意下&#xff0c;这里的startTime&#xff0c;endTime都是Date类型的~


附&#xff1a;XML转义字符


<    <  小于号   
>     >   大于号   
&     &   和   
'     ’   单引号   
"     "   双引号   


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



<if test&#61;"startTime !&#61; null ">
AND <![CDATA[ order_date >&#61; #{startTime,jdbcType&#61;DATE} ]]>
if>
<if test&#61;"endTime !&#61; null ">
AND <![CDATA[ order_date <&#61; #{endTime,jdbcType&#61;DATE} ]]>
if>


 


 


&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;&#61;


附带问题&#xff1a;


使用情况&#xff1a;mybatis  xml中写的mapper  对接的是postgresql数据库


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


下面附上两个xml文件代码和截图&#xff0c;


1.






<?xml version&#61;"1.0" encoding&#61;"UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace&#61;"com.rollong.chinatower.server.persistence.mapper.FinanceReportMapper">
<resultMap id&#61;"financeBriefDataResultMap"
type
&#61;"com.rollong.chinatower.server.api.payload.finance.FinanceBriefData">
<id property&#61;"id" column&#61;"id"/>
resultMap>
<select id&#61;"search" resultMap&#61;"financeBriefDataResultMap">
SELECT
*
FROM
(
SELECT
(
CAST ( partner.id AS VARCHAR ) || &#39;&#64;partner&#39; ) AS ID,
partner.id
AS partnerId,
project.id
AS projectId,
construction.id
AS constructionId,
NULL AS takerId,
NULL AS maintenanceId,
count(report.id) as reportsCount,
sum(report.amount) as totalAmount,
max(report.updated_at) as reportLatestUpdatedAt
FROM
"project"."project_construction_partners"
AS partner
LEFT JOIN "project"."project_construction" AS construction ON partner.construction_id &#61; construction.id
LEFT JOIN "project"."projects" AS project ON construction.project_id &#61; project.id
LEFT JOIN "finance"."finance_reports" as report on partner.id &#61; report.partner_id
WHERE
#{isConstruction}
&#61; TRUE
AND construction.deleted_at IS NULL
<if test&#61;"null !&#61; partnerType">
AND partner.name &#61; &#39;${partnerType}&#39;
if>
<if test&#61;"null !&#61; provinceId">
AND project.province_id &#61; #{provinceId}
if>
<if test&#61;"null !&#61; cityId">
AND project.city_id &#61; #{cityId}
if>
<if test&#61;"null !&#61; districtId">
AND project.district_id &#61; #{districtId}
if>
<if test&#61;"null !&#61; subCompanyId">
AND project.sub_company_id &#61; #{subCompanyId}
if>
<if test&#61;"null !&#61; thirdPartCompanyId">
AND partner.third_part_id &#61; #{thirdPartCompanyId}
if>
<if test&#61;"null !&#61; leaderEmployeeId">
AND partner.leader_employee_id &#61; #{leaderEmployeeId}
if>
<if test&#61;"null !&#61; workerEmployeeId">
AND exists(
select 1 from "third_part"."worker_involved_constructions" as involved
where involved.worker_id &#61; #{workerEmployeeId} AND involved.project_partner_id &#61; partner.id
)
if>
<if test&#61;"null !&#61; reportStatus">
AND exists(
select 1 from "finance"."finance_reports" as r
where r.partner_id &#61; partner.id
<choose>
<when test&#61;"&#39;Submit&#39; &#61;&#61; reportStatus">
and r.approved_at is null and r.rejected_at is null and r.paid_at is null
when>
<when test&#61;"&#39;Approved&#39; &#61;&#61; reportStatus">
and r.approved_at is not null and r.rejected_at is null and r.paid_at is null
when>
<when test&#61;"&#39;Rejected&#39; &#61;&#61; reportStatus">
and r.approved_at is null and r.rejected_at is not null and r.paid_at is null
when>
<when test&#61;"&#39;Paid&#39; &#61;&#61; reportStatus">
and r.paid_at is not null
when>
choose>
)
if>
<if test&#61;"null !&#61; keyword">
AND project.name like #{keyword}
if>
GROUP BY partner.id,project.id,construction.id
UNION
SELECT
(
CAST ( taker.ID AS VARCHAR ) || &#39;&#64;maintenance&#39; ) AS ID,
NULL AS partnerId,
project.ID
AS projectId,
NULL AS constructionId,
taker.ID
AS takerId,
maintenance.ID
AS maintenanceId,
count(report.id) as reportsCount,
sum(report.amount) as totalAmount,
max(report.updated_at) as reportLatestUpdatedAt
FROM
"project"."project_maintenance_takers"
AS taker
LEFT JOIN "project"."project_maintenance" AS maintenance ON taker.maintenance_id &#61; maintenance.id
LEFT JOIN "project"."projects" AS project ON maintenance.project_id &#61; project.id
LEFT JOIN "finance"."finance_reports" as report on taker.id &#61; report.taker_id
WHERE
#{isMaintenance}
&#61; TRUE
AND maintenance.deleted_at IS NULL
AND taker.deleted_at IS NULL
<if test&#61;"null !&#61; provinceId">
AND project.province_id &#61; #{provinceId}
if>
<if test&#61;"null !&#61; cityId">
AND project.city_id &#61; #{cityId}
if>
<if test&#61;"null !&#61; districtId">
AND project.district_id &#61; #{districtId}
if>
<if test&#61;"null !&#61; subCompanyId">
AND project.sub_company_id &#61; #{subCompanyId}
if>
<if test&#61;"null !&#61; thirdPartCompanyId">
AND taker.third_part_id &#61; #{thirdPartCompanyId}
if>
<if test&#61;"null !&#61; leaderEmployeeId">
AND taker.leader_employee_id &#61; #{leaderEmployeeId}
if>
<if test&#61;"null !&#61; workerEmployeeId">
AND exists(
select 1 from "third_part"."worker_involved_maintenance" as involved
where involved.worker_id &#61; #{workerEmployeeId} AND involved.taker_id &#61; taker.id
)
if>
<if test&#61;"null !&#61; reportStatus">
AND exists(
select 1 from "finance"."finance_reports" as r
where r.taker_id &#61; taker.id
<choose>
<when test&#61;"&#39;Submit&#39; &#61;&#61; reportStatus">
and r.approved_at is null and r.rejected_at is null and r.paid_at is null
when>
<when test&#61;"&#39;Approved&#39; &#61;&#61; reportStatus">
and r.approved_at is not null and r.rejected_at is null and r.paid_at is null
when>
<when test&#61;"&#39;Rejected&#39; &#61;&#61; reportStatus">
and r.approved_at is null and r.rejected_at is not null and r.paid_at is null
when>
<when test&#61;"&#39;Paid&#39; &#61;&#61; reportStatus">
and r.paid_at is not null
when>
choose>
)
if>
<if test&#61;"null !&#61; keyword">
AND project.name like #{keyword}
if>
GROUP BY maintenance.id,project.id,taker.id
)
AS table_all
WHERE TRUE
<if test&#61;"minReportsCount !&#61; null">
AND table_all.reportsCount &gt;&#61; #{minReportsCount}
if>
<if test&#61;"maxReportsCount !&#61; null">
AND table_all.reportsCount &lt;&#61; #{maxReportsCount}
if>
<choose>
<when test&#61;"sort &#61;&#61; &#39;Latest&#39;">
ORDER BY table_all.reportLatestUpdatedAt DESC
when>
<when test&#61;"sort &#61;&#61; &#39;AmountAsc&#39;">
ORDER BY table_all.totalAmount ASC
when>
<when test&#61;"sort &#61;&#61; &#39;AmountDesc&#39;">
ORDER BY table_all.totalAmount DESC
when>
choose>
select>
mapper>


View Code


2.






<?xml version&#61;"1.0" encoding&#61;"UTF-8" ?>
<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd" >
<mapper namespace&#61;"com.rollong.chinatower.server.persistence.mapper.OrderMealTimeMapper">
<resultMap id&#61;"OrderMealResult"
type
&#61;"com.rollong.chinatower.server.api.payload.canteen.OrderMealTime" autoMapping&#61;"true">
<result property&#61;"years" column&#61;"years"/>
<result property&#61;"months" column&#61;"months"/>
<result property&#61;"days" column&#61;"days"/>
<result property&#61;"counts" column&#61;"counts"/>
<result property&#61;"checkOut" column&#61;"checkOut"/>
resultMap>
<select id&#61;"search" resultMap&#61;"OrderMealResult">
SELECT
ors.year_meal
AS years,
ors.month_meal
AS months,
ors.day_meal
AS days,
SUM (ors.counts) AS counts,
SUM (ors.checkd_out) AS checkOut
FROM canteen.order_meal ors
WHERE TRUE
<if test&#61;"null !&#61; canteenId">
AND ors.canteen_id &#61; #{canteenId}
if>
<if test&#61;" null !&#61; startY and null !&#61; startM and null !&#61; startD" >
AND <![CDATA[ (ors.year_meal *10000 &#43; ors.month_meal *100 &#43; ors.day_meal) >&#61; (#{startY}*10000&#43;#{startM}*100&#43;#{startD}) ]]>
if>
<if test&#61;" null !&#61; endY and null !&#61; endM and null !&#61; endD" >
AND <![CDATA[ (ors.year_meal *10000 &#43; ors.month_meal *100 &#43; ors.day_meal) <&#61; (#{endY}*10000&#43;#{endM}*100&#43;#{endD}) ]]>
if>
GROUP BY ors.year_meal,ors.month_meal,ors.day_meal
select>
mapper>


View Code


 


 


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


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


 


转载于:https://www.cnblogs.com/sxdcgaq8080/p/8672487.html



推荐阅读
  • android listview OnItemClickListener失效原因
    最近在做listview时发现OnItemClickListener失效的问题,经过查找发现是因为button的原因。不仅listitem中存在button会影响OnItemClickListener事件的失效,还会导致单击后listview每个item的背景改变,使得item中的所有有关焦点的事件都失效。本文给出了一个范例来说明这种情况,并提供了解决方法。 ... [详细]
  • 本文介绍了使用AJAX的POST请求实现数据修改功能的方法。通过ajax-post技术,可以实现在输入某个id后,通过ajax技术调用post.jsp修改具有该id记录的姓名的值。文章还提到了AJAX的概念和作用,以及使用async参数和open()方法的注意事项。同时强调了不推荐使用async=false的情况,并解释了JavaScript等待服务器响应的机制。 ... [详细]
  • Windows下配置PHP5.6的方法及注意事项
    本文介绍了在Windows系统下配置PHP5.6的步骤及注意事项,包括下载PHP5.6、解压并配置IIS、添加模块映射、测试等。同时提供了一些常见问题的解决方法,如下载缺失的msvcr110.dll文件等。通过本文的指导,读者可以轻松地在Windows系统下配置PHP5.6,并解决一些常见的配置问题。 ... [详细]
  • 在说Hibernate映射前,我们先来了解下对象关系映射ORM。ORM的实现思想就是将关系数据库中表的数据映射成对象,以对象的形式展现。这样开发人员就可以把对数据库的操作转化为对 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • 如何去除Win7快捷方式的箭头
    本文介绍了如何去除Win7快捷方式的箭头的方法,通过生成一个透明的ico图标并将其命名为Empty.ico,将图标复制到windows目录下,并导入注册表,即可去除箭头。这样做可以改善默认快捷方式的外观,提升桌面整洁度。 ... [详细]
  • Webpack5内置处理图片资源的配置方法
    本文介绍了在Webpack5中处理图片资源的配置方法。在Webpack4中,我们需要使用file-loader和url-loader来处理图片资源,但是在Webpack5中,这两个Loader的功能已经被内置到Webpack中,我们只需要简单配置即可实现图片资源的处理。本文还介绍了一些常用的配置方法,如匹配不同类型的图片文件、设置输出路径等。通过本文的学习,读者可以快速掌握Webpack5处理图片资源的方法。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • ALTERTABLE通过更改、添加、除去列和约束,或者通过启用或禁用约束和触发器来更改表的定义。语法ALTERTABLEtable{[ALTERCOLUMNcolu ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • 【shell】网络处理:判断IP是否在网段、两个ip是否同网段、IP地址范围、网段包含关系
    本文介绍了使用shell脚本判断IP是否在同一网段、判断IP地址是否在某个范围内、计算IP地址范围、判断网段之间的包含关系的方法和原理。通过对IP和掩码进行与计算,可以判断两个IP是否在同一网段。同时,还提供了一段用于验证IP地址的正则表达式和判断特殊IP地址的方法。 ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • 本文由编程笔记小编整理,主要介绍了使用Junit和黄瓜进行自动化测试中步骤缺失的问题。文章首先介绍了使用cucumber和Junit创建Runner类的代码,然后详细说明了黄瓜功能中的步骤和Steps类的实现。本文对于需要使用Junit和黄瓜进行自动化测试的开发者具有一定的参考价值。摘要长度:187字。 ... [详细]
  • 本文介绍了在CentOS 6.4系统中更新源地址的方法,包括备份现有源文件、下载163源、修改文件名、更新列表和系统,并提供了相应的命令。 ... [详细]
author-avatar
沈晓燕-东东
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有