1. 程式人生 > >前臺傳入long型別數字,如何在資料庫中當做比較條件

前臺傳入long型別數字,如何在資料庫中當做比較條件

   一般都是前臺頁面有搜尋框,框內有開始時間和結束時間,使用這種區間數值進行查詢資料,我會使用以下簡單的方法.
   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}
注,此方法為閉環,包含開始和結束時間,至此即可實現時間比較方法