国内做免费视频网站有哪些,上海网站营销,万户网络网站建设,如何使用网站模板建设网站mybatis使用的是xml格式的文件。使用和号的时候#xff0c;会存在与xml的标签的规范冲突。 1.场景还原
在实际项目中#xff0c;有很多需求需要通过设定一个具体的时间段来搜索或过滤所需的数据#xff0c;今天笔者就mybatis中时间比较涉及到的大于#xff0c;小于… mybatis使用的是xml格式的文件。使用和号的时候会存在与xml的标签的规范冲突。 1.场景还原
在实际项目中有很多需求需要通过设定一个具体的时间段来搜索或过滤所需的数据今天笔者就mybatis中时间比较涉及到的大于小于号的应用方法作个详尽的讲解。
2.实现方案
以下介绍两种可行方法
①转义法
大于
小于
大于等于
小于等于
笔者案例
select idview parameterTypemap resultMapBaseResultMapSELECT * FROM task t,staff s,product p WHERE t.staff_id s.id AND t.product_id p.idif testcompanyId ! null AND t.company_id #{companyId}/ifif testworkshopId ! nullAND t.workshop_id #{workshopId}/ifif testopunitId ! nullAND t.opunit_id #{opunitshopId}/ifif testprocessId ! nullAND t.process_id #{processId}/ifif testOgnlisNotEmpty(equipmentId)AND t.equipment_id #{equipmentId}/ifif testdateStart ! null and dateStart ! AND UNIX_TIMESTAMP(t.date_work) gt; UNIX_TIMESTAMP(#{dateStart})/ifif testdateEnd ! null and dateEnd ! AND UNIX_TIMESTAMP(t.date_work) lt; UNIX_TIMESTAMP(#{dateEnd})/ifGROUP BY t.order_noORDER BY t.date_work
/select运行效果 注意这里的 日期入参类型为String
②![CDATA[ sql语句 ]] ![CDATA[ sql语句 ]]中的![CDATA[ ]]在mybatis中自动注释
笔者案例
select idselectByTime resultTypeDate parameterTypemapSELECTr.stop_timeFROMrtg r ![CDATA[WHERE UNIX_TIMESTAMP(r.stop_time) UNIX_TIMESTAMP(#{startTime})AND UNIX_TIMESTAMP(r.stop_time) UNIX_TIMESTAMP(#{endTime}) ]]
/select运行效果 一、简要概述
平时在mybatis的映射文件写sql时很多时候都需要写一些特殊的字符。例如 字符 “” 字符 “” 字符 “” 字符但是在xml文件中并不能直接写上述列举的字符否则就会报错。因为在解析xml文件时候我们如果书写了特殊字符在没有特殊处理的情况下。这些字符会被转义但我们并不希望它被转义所以我们要使用![CDATA[ ]]来解决。那为什么要这样书写呢![CDATA[ ]] 不言而喻这是XML语法。在CDATA内部的所有内容都会被解析器忽略。所以当我们在xml文本中包含了很多的 字符 “” 和 “” 字符—就像程序代码一样那么最好把他们都放到CDATA部件中。
二、实际书写规范
有个问题需要注意的就是在我们的mybatis的映射文件中以下 等这些标签都不会被解析所以我们只把有特殊字符的语句放在 ![CDATA[ ]]中尽量缩小 ![CDATA[ ]] 的范围。案例 SELECT * FROM (SELECT t.*, rownum FROM bst_busi_msg twhereif testtargetId ! nulland (t.busi_sys_order #{targetId,jdbcTypeVARCHAR}or t.busi_intf_seq #{targetId,jdbcTypeVARCHAR})/ifif testtargetId null and shardingTotal 0and (t.task_status 0OR (t.task_status 3AND t.task_count ![CDATA[ ]] ${com.asiainfo.bst.common.Constantmax_handle_count()}))and MOD(t.msg_id,#{shardingTotal,jdbcTypeNUMERIC}) #{shardingIndex,jdbcTypeNUMERIC}/if/whereORDER BY t.msg_id ASC) WHERE rownum ![CDATA[ ]] #{rownum,jdbcTypeNUMERIC}[说明] 因为这里有 特殊字符所以要使用 来注释但是有标签所以把等放外面 mybatis中写sql语句时需要转义的字符
mybatis配置文件sql语句中含有转义字符
错误语句 select * from table_base where flag_topic #{topic_num}错误信息 Caused by: org.xml.sax.SAXParseException; lineNumber: 8; columnNumber: 54; The entity name must immediately follow the in the entity reference.正确语句 select * from table_base where flag_topic amp; #{topic_num}将语句中的位运算与”“符使用“”替换
mybatis配置文件写SQL语句的某些字符需要转义 lt; gt; lt;gt; amp; apos; quot; 注意要加上分号
ok,以上全是笔者实际需求提炼的心得望能够帮助更多的伙伴