MyBatis中大於號以及小於號的表達方式
阿新 • • 發佈:2018-12-13
原文連結:http://blog.csdn.net/weixin_40278209/article/details/78262173?locationNum=10&fps=1
1.場景還原
在實際專案中,有很多需求需要通過設定一個具體的時間段來搜尋或過濾所需的資料,今天筆者就mybatis中時間比較涉及到的大於,小於號的應用方法作個詳盡的講解。
2.實現方案
以下介紹兩種可行方法:
①轉義法
大於:>
小於:<
大於等於:>=
小於等於:<=
筆者案例:
<select id="view" parameterType="map" resultMap="BaseResultMap"> SELECT * FROM task t,staff s,product p WHERE t.staff_id = s.id AND t.product_id = p.id <if test="companyId != null "> AND t.company_id = #{companyId} </if> <if test="workshopId != null"> AND t.workshop_id = #{workshopId} </if> <if test="opunitId != null"> AND t.opunit_id = #{opunitshopId} </if> <if test="processId != null"> AND t.process_id = #{processId} </if> <if test="@[email protected](equipmentId)"> AND t.equipment_id = #{equipmentId} </if> <if test="dateStart != null and dateStart !='' "> AND UNIX_TIMESTAMP(t.date_work) >= UNIX_TIMESTAMP(#{dateStart}) </if> <if test="dateEnd != null and dateEnd !='' "> AND UNIX_TIMESTAMP(t.date_work) <= UNIX_TIMESTAMP(#{dateEnd}) </if> GROUP BY t.order_no ORDER BY t.date_work </select>
執行效果:
注意:這裡的 日期入參型別為String
②<![CDATA[ sql語句 ]]>
<![CDATA[ sql語句 ]]>中的<![CDATA[ ]]>在mybatis中自動註釋
筆者案例:
<select id="selectByTime" resultType="Date" parameterType="map"> SELECT r.stop_time FROM rtg r <![CDATA[ WHERE UNIX_TIMESTAMP(r.stop_time) >= UNIX_TIMESTAMP(#{startTime}) AND UNIX_TIMESTAMP(r.stop_time) <= UNIX_TIMESTAMP(#{endTime}) ]]> </select>
執行效果:
ok,以上全是筆者實際需求提煉的心得,望能夠幫助更多的夥伴