关于@JSONField(format = “yyyy-mm-dd hh:mm:ss“)的一点疑问

背景:因为数据库中存的时间相关的字段都是date类型的

Date day = new Date();
params.setFdCreateTime(day);

类似于这样通过实体映射存到数据库中

但是前台返回json的时候可能就是下图这样的,肯定是不友好的,前台如果要展示的话肯定还要遍历再formate一下

关于@JSONField(format = “yyyy-mm-dd hh:mm:ss“)的一点疑问_第1张图片

如果要很好的解决上述问题,需要通过alibaba.fastjson的@JSONField(format = "yyyy-mm-dd hh:mm:ss")的注解

但是在代码实现过程中发现,虽然都加了这个注解,但是有的返回的是经过formate之后的理想数据,有的确实原始数据,让我真的很无解

关于@JSONField(format = “yyyy-mm-dd hh:mm:ss“)的一点疑问_第2张图片

然后我就仔细追查对比代码,才发现

能够正常返回formate数据的是map里边直接放了一个查询结果list(list里含有date类型的数据)

        @RequestMapping(value = "/detail", method = RequestMethod.POST)
	public Object showDetail(HttpServletRequest httpServletRequest,@RequestBody Map params) {
		Map result = courseService.detailMap(params);
		return Result.ok(result,"查询成功");
	}
	

postman对应的接口返回的数据如下

关于@JSONField(format = “yyyy-mm-dd hh:mm:ss“)的一点疑问_第3张图片

而返回原始数据的是json里边放的是一个经过json转化的list

public Object getCurriculum(HttpServletRequest httpServletRequest,@RequestBody Map params) {
		//checkToken(httpServletRequest, parentsService);
		List> result = courseService.getCurriculum(params);
		JSONObject json = new JSONObject();
		json.put("list", JSONArray.parseArray(JSON.toJSONString(result)));
		return Result.ok(json,"查询成功");
	}

postman对应的接口返回的数据如下

关于@JSONField(format = “yyyy-mm-dd hh:mm:ss“)的一点疑问_第4张图片

后来把返回原始数据的代码改成map放list

@RequestMapping(value = "/getCurriculum", method = RequestMethod.POST)
	public Object getCurriculum(HttpServletRequest httpServletRequest,@RequestBody Map params) {
		Map map = courseService.getCurriculum(params);
		return Result.ok(map,"查询成功");
	}
	

serviceImpl中的代码

public Map getCurriculum(Map params) {
		Map map = new HashMap();
		map.put("list",classCurriculumDao.selectByClassId(params));
		return map;
	}

postman返回数据:

关于@JSONField(format = “yyyy-mm-dd hh:mm:ss“)的一点疑问_第5张图片

但是也不难发现,经过json转化的list只显示不为空的字段,而直接map里边放list的是只有数据表的属性不管有没有值都会返回

你可能感兴趣的:(sql,java,mybatis,fastjson,@JSONField)