在开发的权限管理模块的时候遇到一种情况:查询数据库中的菜单表,直接将数据用自定义的对象封装起来,向前台返回数据集合的时候偶,前台只需要对象的一部分字段,我这个查询数据的时候是直接拿到所有的字段,要实现返回部分字段的效果可以重写sql,但是这样会跟后面逻辑冲突,因为有些字段后面还有用,所以重写sql就相当于是重复功能只是获取数据不一样了。
这里我发现fastjson有一个特殊功能,就是将对象转为json的时候可以在对象的字段上添加注解,过滤掉不需要的字段:
@JSONField(serialize = false)
当然实现这个效果还有其他方法,后续遇到 再补充;
做这部分的时候,Menus对象里面有几个字段是基本类型,在new对象的时候就会进行初始化,由于在代码中是用的jpa进行的数据库交互,用到了new对象作为example直接去匹配数据库,这里我只给其中一个字段赋值,想要匹配满足这一个字段的即可,但是由于基本类型的字段初始化了,所以也会作为条件去数据库中匹配,解决办法就是将基本类型都改为包装类型,包装类不会进行初始化。