MyBatis的配置文件中有一个配置是
<configuration> <settings> <setting name="callSettersOnNulls" value="true"/> <!-- 返回空字段 --> </settings> </configuration>
这就是即便数据库中的某个字段为空也会返回null的属性,这样配置是完全没有问题的,但是刚开始的时候我的控制层的代码如下边被注释掉的
@ResponseBody @RequestMapping(value="/queryById",method= RequestMethod.POST,produces = "application/json;charset=UTF-8") public String queryById(String id){ Map<Object,Object> map = userServiceImp.queryById(id); System.out.println("map:"+map); Gson gsonSerializeNull = new GsonBuilder().serializeNulls().create(); String gson = gsonSerializeNull.toJson(map); System.out.println(gson); return gson; /*Map<Object,Object> map = userServiceImp.queryById(id); return map;*/ }
这样会导致前端拿不到把鞋字段为null的属性。原因出在了对象向json字符串转化的时候,当改成了上图中未被注释掉的样子的时候,前端就可以取到即便属性值为空的那些属性了。
返回数据库中字段为空的值也可以参考:http://www.open-open.com/lib/view/open1432694378801.html