前臺傳入long型別數字,如何在資料庫中當做比較條件
阿新 • • 發佈:2018-12-01
一般都是前臺頁面有搜尋框,框內有開始時間和結束時間,使用這種區間數值進行查詢資料,我會使用以下簡單的方法.
1.前臺頁面向後臺傳遞LONG型別開始和結束時間的毫秒值
![在這裡插開始入圖片描述](https://img-blog.csdnimg.cn/20181128111720198.png)
2.後臺接收此13位LONG型別毫秒值後可以把這個值格式化成字串格式,如20180808(以後資料庫轉換時間為字串時也使用此格式,方便比較)
//格式化Date型別資料之後的格式 SimpleDateFormat simpleDateFormat = new SimpleDateFormat("YYYYMMdd"); //判斷前臺傳入的搜尋物件是否為空 if (null != search) { if (null != search.getStartTime()) { //取到前臺傳入的Long型別數值,轉換成Date型別資料 Date startTime = new Date(search.getStartTime()); //把Date型別資料格式化為字串型別,封裝回搜尋物件內的相關欄位儲存 search.setStartTime_str(simpleDateFormat.format(startTime)); } //如上 if (null != search.getEndTime()) { Date endTime = new Date(search.getEndTime()); search.setEndTime_str(simpleDateFormat.format(endTime)); } }
3.把搜尋物件傳遞到Mapper介面中
//此處做的帶條件分頁,可忽略分頁相關資訊
List<UserStatistics> findPageByMap(@Param("search") Search search,@Param("pageable") Pageable pageable);
4.在mapper.xml檔案中取值,進行比較,進行字串比較之前,需要使用sql的時間處理函式把時間型別轉成字串型別,然後使用between and 進行比較即可
//此為實現此比較的條件 //DATE_FORMAT(需要比較的時間,轉換之後的格式) //login_time:->date型別欄位 // |%Y| 代表年,4位數字,如2018 | |%m|代表月份,2位,如01| |%d | 代表日,2位,如01 | 還有時分秒:%H:%i:%S',可以根據精度新增 SQL條件: DATE_FORMAT(login_time,'%Y%m%d') BETWEEN #{search.startTime_str} AND #{search.endTime_str} 注,此方法為閉環,包含開始和結束時間,至此即可實現時間比較方法