哈喽,好久不更新今天跑来更新了,这段时间换了新公司,有点小忙,废话就不多说了,我们直接开始正题吧。
不知道大家有没有这样一个感觉,有些东西很简单,确实也非常简单,但是当要去写的时候总想不起来,多多少少有点瑕疵,要不少个括号,要不位置不对,反正我在写SQL语句的时候是深有体会,所以虽然这个注解很简单,但是我还是写下来记录一下,另外跟大家分享一下,方便以后查阅。
Avengers
之前我在写接口的时候,经常返回一些前台不需要的一些字段,举个例子,像用户表,一般由用户名、密码、电话、注册时间等信息,但是我们一般在前台展示的时候是不需要将注册时间展示给用户的,有的朋友可能说了,直接使用@JsonIgnore注解就可以忽略该字段,确实给属性字段加了该注解确实可以让它不返回给前台,但是还有这样一个需求,我们一般都有一个后台管理系统需要管理所有的用户,我们需要查看这个用户是什么时候注册的,那么这个时候有需要显示,那么你怎么办呢?所有@JsonView就可以很好的帮我们处理这种需求了。
先来看一段代码
代码语言:javascript复制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类就算写好了,但是还没有结束。
看最后一段代码
代码语言:javascript复制@RestController
public 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)