場景
在管理系統中,時間的存儲、查詢、顯示的格式往往需要統一。
這就涉及到在數據庫中存儲時間,使用Mybatis對時間進行比較查詢,使用Springboot中的實體類存儲查詢時間,
使用前端時間選擇器,這里是ElementUI的時間選擇器。
注:
博客:
https://blog.csdn.net/badao_liumang_qizhi
關注公眾號
霸道的程序猿
獲取編程相關電子書、教程推送與免費下載。
實現
首先是數據庫中表的設計,關於時間字段,設計為Date類型
數據庫中對於時間的存儲沒有格式要求,只需將其設置為Date類型即可。
然后是在Springboot中進行查詢時,將數據庫中的時間字段映射為實體類時
/** 設置日期 */ @JsonFormat(pattern = "yyyy-MM-dd") private Date szrq; /** 執行日期 */ @JsonFormat(pattern = "yyyy-MM-dd") private Date zxrq; /** 結束日期 */ @JsonFormat(pattern = "yyyy-MM-dd") private Date jsrq;
時間屬性也是Date類型的,對於時間格式的限制可以通過注解
@JsonFormat(pattern = "yyyy-MM-dd")
來實現,里面跟的是格式的模式。
@JsonFormat注解是一個時間格式化注解,比如我們存儲在mysql中的數據是date類型的,當我們讀取出來封裝在實體類中的時候,就會變成英文時間格式,而不是yyyy-MM-dd HH:mm:ss這樣的中文時間,因此我們需要用到JsonFormat注解來格式化我們的時間。
要注意的是,它只會在類似@ResponseBody返回json數據的時候,才會返回格式化的yyyy-MM-dd HH:mm:ss時間,你直接使用System.out.println()輸出的話,仍然是類似“Fri Dec 01 21:05:20 CST 2017”這樣的時間樣式。
這是從數據庫中取數據返回給前端,如果是前端發送參數給后台,后台進行接收那
我們在對應的接收前台數據的對象的屬性上加@DateTimeFormat
/** 設置日期 */ @DateTimeFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd") private Date szrq; /** 執行日期 */ @DateTimeFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd") private Date zxrq; /** 結束日期 */ @DateTimeFormat(pattern = "yyyy-MM-dd") @JsonFormat(pattern = "yyyy-MM-dd") private Date jsrq;
那么前端在傳遞時間參數也可以進行格式化一下,這里使用的是ElementUI的
el-date-picker示例代碼如下
<el-form-item label="執行日期" prop="zxrq"> <el-date-picker clearable size="small" style="width: 200px" v-model="form.zxrq" type="date" value-format="yyyy-MM-dd" placeholder="選擇執行日期"> </el-date-picker> </el-form-item> <el-form-item label="結束日期" prop="jsrq"> <el-date-picker clearable size="small" style="width: 200px" v-model="form.jsrq" type="date" value-format="yyyy-MM-dd" placeholder="選擇結束日期"> </el-date-picker> </el-form-item>
可以通過
value-format="yyyy-MM-dd"
進行格式化顯示。進行通過雙向數據綁定提交到后台,后台接受后再使用其作為查詢條件去篩選數據。
那么在MyBatis中怎樣對時間進行比較
<if test="ksrq != null"> AND date_format(d.ddsj,'%y%m%d') >= date_format(#{ksrq},'%y%m%d') </if> <if test="jsrq != null"> AND date_format(#{jsrq},'%y%m%d') >= date_format(d.ddsj,'%y%m%d') </if>
通過date_format函數對參數和數據庫中的字段按照指定的相同的格式進行時間的比較。