在采用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. [Android Pro] 常用的android工具类和库

    reference to  : http://blog.csdn.net/lovexieyuan520/article/details/50614086 这篇博客主要记录我认为比较有用的Android ...

  2. Xshell5连接虚拟机出现连Could not connect to '192.168.47.128' (port 22): Connection failed,解决办法

    该日记写于2016年11月28日.在用Xshell5连接ubuntu虚拟OS时一直连接不上.出现这种情况的原因可能很多,有像百度上面说的没有关闭linux的防火墙,没有启动linux的ssh服务.但这 ...

  3. AutoMapper搬运工之配置

    回顾 前几篇搬运了AutoMapper的基本用法,自定义映射,相信有看的同学已经会使用AutoMapper这个强大的Mapping工具了.不过细心的你是否还记得前几篇中有提到Map的创建并非是每次都需 ...

  4. Mac下环境变量配置

    Mac下的常用环境变量配置文件 1./etc/profile   (建议不修改这个文件 ) 全局(公有)配置,不管是哪个用户,登录时都会读取该文件. 2./etc/bashrc    (一般在这个文件 ...

  5. 简述抽象和封装,对你学习Java有一些作用

    作为一个Java 初学者,对Java的理解可能有些片面,甚至有些错误的理解,对于观看此处的您,希望您选择性观看!!! 天知道我为什么选择学习编程,我不爱编程,但是我既然学习了,还是会努力学习的,在此分 ...

  6. 【MongoDB】6.关于MongoDB存储文件的 命令执行+代码执行

    参考:http://www.runoob.com/mongodb/mongodb-gridfs.html 1.命令执行 MongoDB GridFS GridFS 用于存储和恢复那些超过16M(BSO ...

  7. Linux环境下的Nginx编译与安装

    1.新建文件夹: mkdir -p /zuker cd /zuker 2.编译: yum -y install gcc-c++ make wget autoconf libjpeg libjpeg-d ...

  8. 简述UIScrollView的属性和用法

    contentOffset 默认CGPointZero,用来设置scrollView的滚动偏移量.       // 设置scrollView的滚动偏移量       scrollView.conte ...

  9. UIView--震动效果

    //震动效果- (void)shake:(UIView *)view{ CGRect frame = view.frame; CAKeyframeAnimation *shakeAnimation = ...

  10. 【改】iOS学习之键盘类型UIKeyboardType

    关于 UITextField 的键盘是可以自定义的,正好在一个代码用这个,就总结一下. 在 UITextField 中有一个 keyboardType 属性,它的类型是一个枚举值,下面就是枚举值和对应 ...