1.場景還原
在實際項目中,有很多需求需要通過設定一個具體的時間段來搜索或過濾所需的數據,今天筆者就mybatis中時間比較涉及到的大於,小於號的應用方法作個詳盡的講解。
2.實現方案
以下介紹兩種可行方法:
①轉義法
大於:>
小於:<
大於等於:>=
小於等於:<=
筆者案例:
1 2 3 <select id="view" parameterType="map" resultMap="BaseResultMap"> 4 SELECT * FROM task t,staff s,product p WHERE t.staff_id = s.id AND t.product_id = p.id 5 <if test="companyId != null "> 6 AND t.company_id = #{companyId} 7 </if> 8 <if test="workshopId != null"> 9 AND t.workshop_id = #{workshopId} 10 </if> 11 <if test="opunitId != null"> 12 AND t.opunit_id = #{opunitshopId} 13 </if> 14 <if test="processId != null"> 15 AND t.process_id = #{processId} 16 </if> 17 <if test="@Ognl@isNotEmpty(equipmentId)"> 18 AND t.equipment_id = #{equipmentId} 19 </if> 20 <if test="dateStart != null and dateStart !='' "> 21 AND UNIX_TIMESTAMP(t.date_work) >= UNIX_TIMESTAMP(#{dateStart}) 22 </if> 23 <if test="dateEnd != null and dateEnd !='' "> 24 AND UNIX_TIMESTAMP(t.date_work) <= UNIX_TIMESTAMP(#{dateEnd}) 25 </if> 26 GROUP BY t.order_no 27 ORDER BY t.date_work 28 </select>
運行效果:
注意:這里的 日期入參類型為String
②<![CDATA[ sql語句 ]]>
<![CDATA[ sql語句 ]]>中的<![CDATA[ ]]>在mybatis中自動注釋
筆者案例:
1 <select id="selectByTime" resultType="Date" parameterType="map"> 2 SELECT 3 r.stop_time 4 FROM 5 rtg r <![CDATA[ 6 WHERE UNIX_TIMESTAMP(r.stop_time) >= UNIX_TIMESTAMP(#{startTime}) 7 AND UNIX_TIMESTAMP(r.stop_time) <= UNIX_TIMESTAMP(#{endTime}) ]]> 8 </select>
運行效果:
ok,以上全是筆者實際需求提煉的心得,望能夠幫助更多的伙伴
原文:https://blog.csdn.net/a657281084/article/details/78642440