本文共 6760 字,大约阅读时间需要 22 分钟。
处理大于小于号的方法:
https://www.cnblogs.com/winner-0715/p/6132755.html
第一种方法:
AND order_date >= #{startTime,jdbcType=DATE} AND order_date <= #{endTime,jdbcType=DATE}
注意下,这里的startTime,endTime都是Date类型的~
附:XML转义字符
AND = #{startTime,jdbcType=DATE} ]]> AND
====================================
附带问题:
使用情况:mybatis xml中写的mapper 对接的是postgresql数据库
问题:在同一个项目中不同的mapper.xml文件中,分别出现了>= 和<=的比较运算符,但是在一个xml中需要额外处理才能使用,一个xml文件中不需要额外处理>或者<符号可以直接使用
下面附上两个xml文件代码和截图,
1.
SELECT * FROM ( SELECT ( CAST ( partner.id AS VARCHAR ) || '@partner' ) 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 = construction.id LEFT JOIN "project"."projects" AS project ON construction.project_id = project.id LEFT JOIN "finance"."finance_reports" as report on partner.id = report.partner_id WHERE #{isConstruction} = TRUE AND construction.deleted_at IS NULL AND partner.name = '${partnerType}' AND project.province_id = #{provinceId} AND project.city_id = #{cityId} AND project.district_id = #{districtId} AND project.sub_company_id = #{subCompanyId} AND partner.third_part_id = #{thirdPartCompanyId} AND partner.leader_employee_id = #{leaderEmployeeId} AND exists( select 1 from "third_part"."worker_involved_constructions" as involved where involved.worker_id = #{workerEmployeeId} AND involved.project_partner_id = partner.id ) AND exists( select 1 from "finance"."finance_reports" as r where r.partner_id = partner.id and r.approved_at is null and r.rejected_at is null and r.paid_at is null and r.approved_at is not null and r.rejected_at is null and r.paid_at is null and r.approved_at is null and r.rejected_at is not null and r.paid_at is null and r.paid_at is not null ) AND project.name like #{keyword} GROUP BY partner.id,project.id,construction.id UNION SELECT ( CAST ( taker.ID AS VARCHAR ) || '@maintenance' ) 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 = maintenance.id LEFT JOIN "project"."projects" AS project ON maintenance.project_id = project.id LEFT JOIN "finance"."finance_reports" as report on taker.id = report.taker_id WHERE #{isMaintenance} = TRUE AND maintenance.deleted_at IS NULL AND taker.deleted_at IS NULL AND project.province_id = #{provinceId} AND project.city_id = #{cityId} AND project.district_id = #{districtId} AND project.sub_company_id = #{subCompanyId} AND taker.third_part_id = #{thirdPartCompanyId} AND taker.leader_employee_id = #{leaderEmployeeId} AND exists( select 1 from "third_part"."worker_involved_maintenance" as involved where involved.worker_id = #{workerEmployeeId} AND involved.taker_id = taker.id ) AND exists( select 1 from "finance"."finance_reports" as r where r.taker_id = taker.id and r.approved_at is null and r.rejected_at is null and r.paid_at is null and r.approved_at is not null and r.rejected_at is null and r.paid_at is null and r.approved_at is null and r.rejected_at is not null and r.paid_at is null and r.paid_at is not null ) AND project.name like #{keyword} GROUP BY maintenance.id,project.id,taker.id ) AS table_all WHERE TRUE AND table_all.reportsCount >= #{minReportsCount} AND table_all.reportsCount <= #{maxReportsCount} ORDER BY table_all.reportLatestUpdatedAt DESC ORDER BY table_all.totalAmount ASC ORDER BY table_all.totalAmount DESC
2.
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 AND ors.canteen_id = #{canteenId} AND = (#{startY}*10000+#{startM}*100+#{startD}) ]]> AND GROUP BY ors.year_meal,ors.month_meal,ors.day_meal
【究竟是xml的问题/还是对接的数据库的问题/还是数据库中对于某些类型字段处理不一样】
如果有兴趣或者刚好知道,遇到过这种情况的 希望大家能给个反馈,多多交流!!
转载于:https://www.cnblogs.com/sxdcgaq8080/p/8672487.html