使用JsonView,减少vo的数量
来源:互联网 发布:树莓派python串口编程 编辑:程序博客网 时间:2024/04/30 11:29
前言:
在我们的开发中,经常会有这样的情景,后台从数据库中查询到前端需要的数据后,就会返回给前端,此时,我们就会封装一个vo,用来传输结果,例如一个StudentVo类,里面有姓名,班级,年级等信息,另一个业务接口需要的字段和StudentVo类里面的字段类似,只是多了两个字段而已,一般的做法是,会另外建一个vo类,然后将vo类和StudentVo类里面公用的部分提取到另一个基类中,供继承。今天来介绍一种全新的处理方法,@JsonView
1、新建一个Vo
public class User {private String userName;private String password;private String address;private String age;private String sex;}
2、建两个controller
@GetMapping("/jsonview")// 需求:展示User里面的全部信息public User jsonDetailViewController(){User u = new User();u.setAddress("chongqing");u.setAge("25");u.setPassword("123456");u.setSex("nan");u.setUserName("chhliu");return u;}@GetMapping("/jsonviews")// 需求,只展示User里面的userName字段public User jsonSimpleViewController(){User u = new User();u.setAddress("chongqing");u.setAge("25");u.setPassword("123456");u.setSex("nan");u.setUserName("chhliu");return u;}
现在的需求很清楚了,一个需要展示全部的字段信息,另一个只需要展示userName字段的信息,怎么实现了?
该@JsonView登场了
3、在User这个vo里面新建两个接口
该接口没有什么实质性的意义,主要起到一个区分的效果,该接口可以根据服务来建。
4、根据接口的不同,来决定哪个业务接口需要展示哪些字段,如下:
public class User {public interface ServiceGroup1{};// 接口一:用于仅展示userName字段public interface ServiceGroup2 extends ServiceGroup1 {};// 接口二,继承自接口一,用于展示全部的字段@JsonView(ServiceGroup1.class)// 通过@JsonView+接口,来决定该字段在哪个业务里面展示private String userName;@JsonView(ServiceGroup2.class)private String password;@JsonView(ServiceGroup2.class)private String address;@JsonView(ServiceGroup2.class)private String age;@JsonView(ServiceGroup2.class)private String sex;}
5、在controller里面显示的标注
@GetMapping("/jsonview")@JsonView(User.ServiceGroup1.class)// 该controller里面展示的是ServiceGroup1标注的字段public User jsonDetailViewController(){User u = new User();u.setAddress("chongqing");u.setAge("25");u.setPassword("123456");u.setSex("nan");u.setUserName("chhliu");return u;}@GetMapping("/jsonviews")// 该controller里面展示的是ServiceGroup2标注的字段@JsonView(User.ServiceGroup2.class)public User jsonSimpleViewController(){User u = new User();u.setAddress("chongqing");u.setAge("25");u.setPassword("123456");u.setSex("nan");u.setUserName("chhliu");return u;}
6、测试结果如下:
{"userName":"chhliu"}
{"userName":"chhliu","password":"123456","address":"chongqing","age":"25","sex":"nan"}
从上面的测试结果中,很容易看出,两个controller返回的结果是不一样的,尽管都是return u。通过上面的示例,在我们的实际生产中,可以通过这种方式,来减少vo的使用,同时也会减少大量的重复代码。
阅读全文
0 0
- 使用JsonView,减少vo的数量
- [Jackson] @JsonView的使用
- JsonView插件的使用
- 使用viewFliper减少activity数量
- Verilog程序如何优化减少逻辑单元的使用数量
- 如何减少TIME_WAIT的数量
- 减少DOM元素的数量
- 系统消息数量的增加及减少!
- win7减少病毒入侵的数量
- 学习FPGA verilog的心得--编程技巧--如何写代码减少逻辑单元的使用数量
- FPGA verilog的编程心得---如何写代码减少逻辑单元的使用数量?
- FPGA verilog的编程心得---如何写代码减少逻辑单元的使用数量?
- CPLD/FPGA/Verilog_如何写代码减少逻辑单元的使用数量
- CPLD/FPGA/Verilog_如何写代码减少逻辑单元的使用数量
- CPLD/FPGA/Verilog_如何写代码减少逻辑单元的使用数量
- CPLD/FPGA/Verilog_如何写代码减少逻辑单元的使用数量
- Spring @JsonView使用
- struts2中减少action数量(通配符使用)
- android 炫酷的下拉动画
- 高念书:未来的运营是基于生态环境的运营 | IDC:2021年全球“整体云”收入将突破5540亿美元
- s3c2440存储控制器和地址以及启动的理解
- 继承中的初始化顺序
- Android studio apk打包签名:
- 使用JsonView,减少vo的数量
- SuperTextView多形态控件
- Model Tree Structures with an Array of Ancestors
- 帕克西AR试妆|试妆有术,你就是天生尤物
- 673. Number of Longest Increasing Subsequence
- ABB MOVEL指令执行未完成就执行下一条
- hover鼠标悬浮3D移动效果
- phpinfo里面的重要信息,nts,x86
- Scala--String Interpolation