model 代码:
public class A{
private long id;
private String name;
private String avatar;
private int score;
private B b;
//......setter and getter
}
controller代码:
@RequestMapping("/A")
@ResponseBody
public A getModel(){
A a = new A();
a.setName("one");
a.setAvatar("avatar.jpg");
return a;
}
那么在前端请求/A时就会得到:
{id:0,name:"one",avatar:"avatar.jpg",score:0,b:null}
这不是我希望的结果,我希望前端只能拿到它所需要的name 和 avatar。
不完美的解决方案
用mybatis时,每次查询结果数据,用Map来承载,而不是bean,在Controller中也是如此(甚至可以剔除model层)。但这样就要求对数据库表非常了解,而牺牲了很多便利操作(如 增、改操作)
jackson,@JsonIgnore。不满足要求,需要序列化的Property,并非固定的。这次我要id,name,下次我可能要name,score
通过反射解决了,用字符串的形式设置所有获取的字段名。
通过反射获取到该类和所要获取的字段get方法,保存在一个map中