哈喽,好久不更新今天跑来更新了,这段时间换了新公司,有点小忙,废话就不多说了,我们直接开始正题吧。
不知道大家有没有这样一个感觉,有些东西很简单,确实也非常简单,但是当要去写的时候总想不起来,多多少少有点瑕疵,要不少个括号,要不位置不对,反正我在写SQL语句的时候是深有体会,所以虽然这个注解很简单,但是我还是写下来记录一下,另外跟大家分享一下,方便以后查阅。
Avengers
之前我在写接口的时候,经常返回一些前台不需要的一些字段,举个例子,像用户表,一般由用户名、密码、电话、注册时间等信息,但是我们一般在前台展示的时候是不需要将注册时间展示给用户的,有的朋友可能说了,直接使用@JsonIgnore注解就可以忽略该字段,确实给属性字段加了该注解确实可以让它不返回给前台,但是还有这样一个需求,我们一般都有一个后台管理系统需要管理所有的用户,我们需要查看这个用户是什么时候注册的,那么这个时候有需要显示,那么你怎么办呢?所有@JsonView就可以很好的帮我们处理这种需求了。
先来看一段代码
public class User { public interface UserSimpleView {}; public interface UserDetailView extends UserSimpleView {}; @JsonView(UserSimpleView.class) private Long id; @JsonView(UserSimpleView.class) private String username; private String passwrod; @JsonView(UserDetailView.class) private Date registeredTime;}
我们在上方分别定义了两个接口,使用@JsonView注解,我们将前台需要展示的字段指向UserSimpleView接口,我们这里需要注意,因为前台所需的数据后台也是需要展示的,所以这里我们直接通过UserDetailView继承UserSimpleView即可,最后我们将注册时间指向UserDetailView,这样我们的model类就算写好了,但是还没有结束。
看最后一段代码
@RestControllerpublic class UserController { @GetMapping("/user") @JsonView(User.UserSimpleView.class) public R getUser() { User user = new User(); user.setId(1L); user.setUsername("一个程序员的成长"); user.setPasswrod("123"); user.setRegisteredTime(new Date()); return R.data(user); }}
我们需要在Controller方法上面也加@JsonView注解,需要注明我们返回哪些字段,它里面装的就是我们刚才配置的那些字段,最后我们来看一看结果。
@JsonView(User.UserSimpleView.class)
@JsonView(User.UserDetailsView.class)
大家看明白了吗?看明白了,记得给个好看偶!!!
更多内容请关注“一个程序员的成长”
本文分享自微信公众号 - 一个程序员的成长(xiaozaibuluo)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。