标签:
在采用springMvc+Mybatis的架构中。数据库已经建好,数据库和需要返回的实体共用一个model。一切都井然有序,看起来很美好。
返回的代码都如下这样
@RequestMapping("/doxx.do") @ResponseBody public doxxx(String param){ Map<String,Object> resultMap=new HashMap(); .... ModelA model=modelService.doJob(param); resultMap.put("data",model); return resultMap; } class Model{ private String nameA; private Date nameB; ... }
这时候,客户端同学突然对我这个后台说:“亲,这个model我们想复用另一个工程里面现有的,内容都是一样的,就是一些变量名要改,timestamp要变成yyyy-MM-dd的字符串。请给我们返回这样的格式哟~”。
呦你妹啦,由于controller 是直接把model放到requestMap里面的,难道要我重新拼一个对象,把数据都转换一遍,这代码就太丑了。那我从头改数据库和model,全部改一遍?这也太麻烦了,时间也不一定允许,这不是坑爹么!
然而事实证明,我果然是too young too simple。问了同事之后发现,这样的情况其实很好解决,只要简单的加个注解,做一点点修改,就可以完成。所以在这里记录一下,强调一下自己的无知,把自己钉在历史的耻辱柱上,没事就回来看看~
1.对于变量名的变化
@JsonProperty("name_A") private String nameA;
这样就可以把原本返回的nameA变成name_A。而在代码内部,则仍是按照nameA来使用,简单整洁
2.对于变量类型的变化
稍微麻烦一点,但是仍很简便
@JsonSerialize(using = CustomDateSerializer.class) private Date updateTime; /********另一个文件*********************/ public class CustomDateSerializer extends JsonSerializer<Date> { @Override public void serialize(Date value, JsonGenerator gen, SerializerProvider serializers) throws IOException, JsonProcessingException { if (value != null) { gen.writeString(new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(value)); } } }
通过自定义的序列化方法,可以有很高自由度的更改返回的数据内容。上面的就是把date变为 yyyy-MM-dd HH:mm:ss 返回
3.对于model中不想返回的变量
这个就很简单啦
@JsonIgnore private Date createTime;
加上JsonIgnore就不会返回啦。
虽说都不是什么难理解的高深技术,但是这些小技巧对于工作中提高效率真的很有帮助,多学多看,多写多问。
好久没写博客了,以后还是要抽空来写,多多学习~
标签:
原文地址:http://www.cnblogs.com/mamuluke/p/5702040.html