在采用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就不会返回啦。

虽说都不是什么难理解的高深技术,但是这些小技巧对于工作中提高效率真的很有帮助,多学多看,多写多问。

好久没写博客了,以后还是要抽空来写,多多学习~

JsonProperties对模型返回的应用的更多相关文章

  1. C#异步编程のTask模型返回值Task<TResult>应用

    文中所有Task<TResult>的返回值都是直接用task.result获取,这样如果后台任务没有执行完毕的话,主线程会等待其执行完毕,这样的话就和同步一样了(看上去一样,但其实awai ...

  2. 简单讲解MVC(视图/模型/控制器)

    MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界面显示分离的方法组织代码 ...

  3. 谈谈c#中异步编程模型的变迁

    大家在编程过程中都会用到一些异步编程的情况.在c#的BCL中,很多api都提供了异步方法,初学者可能对各种不同异步方法的使用感到迷惑,本文主要为大家梳理一下异步方法的变迁以及如何使用异步方法. Beg ...

  4. MVC模型 简介

    MVC (Modal View Controler)本来是存在于Desktop程序中的,M是指数据模型,V是指用户界面,C则是控制器.使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用 ...

  5. Mvc设计模型与三层架构

    Mvc(Model-View-Controller):是软件架构的一中设计模式,对软件进行分割成3个层次:视图.模型.控制. 实现对软件的一种动态的设计,并且容易对软件进行扩展.后期的修改,使某些程序 ...

  6. 第一个MVC模型

    根据慕课网的视频自学来的. 关于MVC的简介和一些常识:http://www.cnblogs.com/jobscn/archive/2011/11/08/2240725.html MVC模式 : MV ...

  7. MVC模型与FishiGUI应用层MVC型号

    MVC概要: MVC (Modal View Controler)M是指数据模型,V是指用户界面,C则是控制器. 使用MVC的目的是将M和V的实现代码分离,从而使同一个程序能够使用不同的表现形式.比方 ...

  8. django同时查询两张表的数据,合并检索对象返回

    原始需求: 1.一篇文章内容分N个版块,每篇文章的版块数量不同. 2.有个文章搜索功能,需要同时搜索标题和内容. 实现思路: 1.由于每篇文章的内容版块数量不同,因此将每个文章的标题和内容分开存入2张 ...

  9. 评价指标的局限性、ROC曲线、余弦距离、A/B测试、模型评估的方法、超参数调优、过拟合与欠拟合

    1.评价指标的局限性 问题1 准确性的局限性 准确率是分类问题中最简单也是最直观的评价指标,但存在明显的缺陷.比如,当负样本占99%时,分类器把所有样本都预测为负样本也可以获得99%的准确率.所以,当 ...

随机推荐

  1. vagrant安装及使用方法

    http://www.chenjie.info/1757 http://blog.csdn.net/zsl10/article/category/6324870   --以下转自MaxWellDuva ...

  2. [Android]电话拨号器开发

    继续今天的Android,经过昨天大体了解了Android开发的一些基本文件结构,今天来做一个电话拨号器! 预期达到的效果 实现过程 首先还是按照昨天第一篇教程,新建一个项目叫PhoneCall的An ...

  3. Install MySQL on CentOS 7

    原文:https://devops.profitbricks.com/tutorials/install-mysql-on-centos-7/ 1.下载mysql 在mysql官网选择适合的mysql ...

  4. Android入门(十):界面的布局方式及其实际应用

    关于Android界面布局,网上已经有了很多非常不错的学习资料,在这里我也不班门弄斧了,推荐两篇我认为写的不错的教程,然后再重点讲一下几种布局方式的实际应用. 教程链接:①http://www.cnb ...

  5. 2016最新 wamp2.5+windows 10安装CoedSgniffer代码格式检查:5分钟安装 30分钟入门和浏览常用命令

    14:59 2016/1/112016最新 wamp2.5+windows 10安装CoedSgniffer代码格式检查:注意问题:1.手动安装2.5.0和pear安装方式都成功但是执行时无任何反映, ...

  6. 【BZOJ】3309: DZY Loves Math

    题意 \(T(T \le 10000)\)次询问,每次给出\(a, b(1 \le a, b \le 10^7)\),求 \[\sum_{i=1}^{a} \sum_{j=1}^{b} f((i, j ...

  7. ubuntu14.04下安装ngnix,mediawiki,nodebb,everything,gitlab

    本周折腾了以下几个东西,mediawiki(维基),nodebb(论坛),gitlab(私有git服务器). 本来的目的是搭建一个wiki,选用了mediawiki后,使用apache搭建好了. 搭论 ...

  8. synchronized的实现原理和应用

    在多线程并发编程中synchronized是元老级的角色,人多称重量级锁. synchronized实现同步的基础:Java中的每一个对象都可以作为锁.具体表现有如下3种: 1.对于普通同步方法,锁时 ...

  9. 那些年一起用过的iOS开发利器之Parse

    阅读此文章需要对Objective-C和iOS有一定的了解,完全没有基础的朋友请先阅读<让不懂编程的人爱上iPhone开发>系列教程. 什么是后台服务(back-end service)? ...

  10. swift 2.x学习笔记(三)

    p.p1 { margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Menlo; color: #008400 } p.p2 { margin: 0.0px 0. ...