spring boot参数为日期的查询
前言
早先做參數(shù)傳遞實(shí)驗(yàn)的時(shí)候忽略了日期類(lèi)型,導(dǎo)致要用的時(shí)候踩坑不斷。因?yàn)槭菍W(xué)習(xí)筆記的關(guān)系,所以里面都只是截取關(guān)鍵的代碼進(jìn)行記錄。
準(zhǔn)備階段
因?yàn)橐玫?#64;JsonFormat注解和工具類(lèi)DateUtils,所以先在pom.xml中添加相關(guān)包的依賴(lài):
<dependency><groupId>com.fasterxml.jackson.core</groupId><artifactId>jackson-annotations</artifactId><version>2.9.6</version> </dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.8.1</version> </dependency>我們平時(shí)建項(xiàng)目的時(shí)候,最好是建帶Maven的項(xiàng)目。這樣我們?cè)谟玫奖镜貨](méi)有的包的時(shí)候,只需要在pom.xml文件中添加一句依賴(lài)就可以了,否則就需要自己到網(wǎng)上去下載再手動(dòng)導(dǎo)入。添加依賴(lài)可以理解為在項(xiàng)目中導(dǎo)入相關(guān)的包,可以為了我們節(jié)省大量的開(kāi)發(fā)時(shí)間。
核心部分
1. Entity層
在實(shí)體類(lèi)的日期屬性上,我們需要加上@JsonFormat注解,利用它的pattern屬性來(lái)進(jìn)行時(shí)間的格式化,利用timezone屬性來(lái)解決時(shí)差問(wèn)題。“GMT+8”表示我們?cè)跂|八區(qū),不然我們收到前端傳來(lái)的時(shí)間有可能相差8個(gè)小時(shí)。
@Column(name = "drop_date") @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") private Date dropDate;2. dao層
不得不說(shuō),這個(gè)自動(dòng)生成SQL語(yǔ)句是真的方便,不僅日期類(lèi)型也能操作(好吧,數(shù)據(jù)庫(kù)中存在的字段類(lèi)型都可以),還不會(huì)因?yàn)閿?shù)據(jù)庫(kù)的不同而出現(xiàn)問(wèn)題(支持跨平臺(tái))。
至于生成SQL語(yǔ)句的規(guī)則,再掛一波文檔:官方文檔
3. controller層
以為到這里就沒(méi)什么問(wèn)題了,其實(shí)坑才剛開(kāi)始……
本次是以json方式傳參,這里用@RequestBody + Map接收前端傳過(guò)來(lái)的鍵值對(duì)。里面用到的DateUtils.parseDate()函數(shù)的第一個(gè)參數(shù)是表示時(shí)間的字符串,第二個(gè)參數(shù)是時(shí)間的格式(詳情可以參照SimpleDateFormat類(lèi)時(shí)間格式的寫(xiě)法)。
@RequestMapping(path = "/find3")public List<Message> findBetween(@RequestBody Map<String, Object> params) {Date startDate = null;Date endDate = null;try {//第一個(gè)參數(shù)是表示時(shí)間的字符串,第二個(gè)參數(shù)是時(shí)間的格式startDate = DateUtils.parseDate((String)params.get("startDate"), "yyyy-MM-dd HH:mm:ss");endDate = DateUtils.parseDate((String)params.get("endDate"), "yyyy-MM-dd HH:mm:ss");} catch (ParseException e) {e.printStackTrace();}return marRepository.findByDropDateBetween(startDate, endDate);}測(cè)試時(shí)傳遞的數(shù)據(jù):
{"startDate":"2019-05-23 14:35:12","endDate":"2019-08-12 11:02:00" }參考資料
總結(jié)
以上是生活随笔為你收集整理的spring boot参数为日期的查询的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Spring Boot实现简单的用户权限
- 下一篇: 2019CCPC网络选拔赛签到题题解