1. 程式人生 > >mybatis+mysql時間查詢以及map傳參,controller接受時間日期型別的引數

mybatis+mysql時間查詢以及map傳參,controller接受時間日期型別的引數

最近用到了mybatis+mysql時間查詢以及map傳參
其實用map傳參,真的很方便,將引數以鍵值對的方式存入map,在map.xml檔案中引數型別就是

parameterType="java.util.HashMap"

取值的時候取map中的key就行了。注:一下程式碼中如果沒有

 <select id="countReportBySiteId"  parameterType="java.util.HashMap" resultType="java.lang.Integer">
        SELECT COUNT(*) FROM g_oa_report WHERE site_id=#{siteId} AND (report_status=1 OR report_status=2)
            <if
test="startTime != null and startTime !=''">
<![CDATA[ and publish_time >= DATE_FORMAT(#{startTime}, '%Y-%m-%d %H:%T:%s') ]]> </if> <if test="endTime != null and endTime!=''"> <![CDATA[ and publish_time <= DATE_FORMAT(#{endTime}, '%Y-%m-%d %H:%T:%s') ]]>
</if> </select>

controller

 @RequestMapping("/countBySiteId")
    @ResponseBody
  /*  public ApiResult countBySiteId(Integer siteId,HttpSession session){*/
    public ApiResult countBySiteId(Integer siteId,
                                   @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss"
) Date startTime, @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss") Date endTime, HttpSession session) throws ParseException { // 定義一個map來封裝引數。然後直接傳遞給map做引數 Map<String ,Object> hashMap = new HashMap(); hashMap.put("siteId",siteId); hashMap.put("startTime",startTime); hashMap.put("endTime",endTime);

這裡js穿過來的是一個json字串

var _queryParam = {
    pageSize: 50,
    pageNumber: 1,
    startTime: "",
    endTime: "",   
    siteId: 0
}

在後臺獲取的時候,你可以寫多個物件,去接收前臺穿過來的引數,但條件是,你物件裡的屬性名得和傳遞過來的每個引數名字樣,它會自動幫我們封裝到物件了。
這裡我們並沒有實體類與前臺傳遞過來的引數對應,於是我們就用了很多的物件去接收,如String,Date等,它會根據相應的格式自動去封裝。
@DateTimeFormat(pattern = “yyyy-MM-dd HH:mm:ss”) Date startTime,可以將前臺傳遞過來的字串轉換成日期格式(如果直接以日期格式來接受的或會報錯)

附:時間是一個比較常用的型別。顯示的時候通常是以String顯示的。如果前端引數,前端人員也希望用String作為引數

常用註解

@DatetimeFormat是將String轉換成Date,一般前臺給後臺傳值時用

@JsonFormat(pattern=”yyyy-MM-dd”) 將Date轉換成String 一般後臺傳值給前臺時

@JsonFormat會讓時間以0區時間顯示。如果直接使用會少了8小時(我所在的是北京時區)修改為

@JsonFormat(pattern=”yyyy-MM-dd”,timezone=”GMT+8”)

ps:在後端向前端傳遞資料的時候,我們傳遞一個map物件,那麼他就是一個物件,我們可以直接點出屬性:資料結構{屬性1,屬性2}
map的json格式:{屬性1,屬性2}
如果是一個list集合那麼他是一個數組的形式,裡面有很多的物件[{物件1},{物件2}]
list的json格式:[{物件1},{物件2}]
以上兩種格式可以無限的巢狀