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}]
以上两种格式可以无限的嵌套

猜你喜欢

转载自blog.csdn.net/java_xxxx/article/details/81171130