爪哇基础之@JsonIgnore注解

爪哇基础之@JsonIgnore注解

2023年6月23日发(作者:)

⽖哇基础之@JsonIgnore注解专属⽬录⽖哇基础 之 @JsonIgnore 注解前⾔⽇常Java开发时,会经常与前端开发、ios 或 安卓开发,进⾏数据交互,前⾯我们也说了使⽤json 序列化后交互,可是⼜有⼀个头疼的问题,那就是⼀般返回到前端的实体类中,是有⼀些属性不想暴露出去,⽐如 ⽤户的密码,还有⼀些⾃增的ID等等⼀些不需要的信息。⽽有时候也有⾃⾝的原因,想偷懒不想专门写个

VO、DTO、PO ,可那些多余的字段前端⼜不需要,我们⼜该如何处理呢!今天我们就来说下仅⽤⼀个注解,即可搞定以上问题!这个注解就是 ——

@JsonIgnore ,它是

Jackson

注解包 下的⼀个注解!具体 Jackson 如何使⽤,可点击查看!作⽤@JsonIgnore 的作⽤到底是什么呢!它的作⽤就是在后端给前端数据的时候对后端发送出的json字符串能够发挥作⽤的⼀个注解,可以忽略不想传递给前台的属性或接⼝如果不使⽤此注解的话,在json序列化时将java bean中的⼀些属性删除掉后,对于前端是不需要,可是我们后端操作的时候却是需要的,如 ⽤户的密码字段,前端并不需要返回,但是后端操作逻辑处理,验证登录等等都是需要的,如果将属性删掉,就⽆法使⽤ set/get ⽅法,也就失去了对数据的操作!使⽤那@JsonIgnore 该如何使⽤呢?下⾯我们来写⼀个简单的实例来清楚的看下效果!正常不使⽤注解写法pojo 实体类ckage ;import sConstructor;import ;import Constructor;import izable;import ;/** * @ClassName: User * @Description: (描述) * @Author: WHT * @Version: V1.0 * @Date: 2020/11/5 17:55 */@Data@NoArgsConstructor@AllArgsConstructorpublic class User implements Serializable { private Integer id; private String username; private String password; private Integer age; private Integer sex; private Integer status; private Date date; private static final long serialVersionUID = 1L;}Example类ample类

Mybatis 逆向⼯程直接⽣成即可!如果还不会逆向⼯程的话,可查看以下⽂章,点击即可查看进⼀步学习!Service 逻辑层 (接⼝)package e;import ;import ;/** * @ClassName: UserService * @Description: (描述) * @Author: WHT * @Version: V1.0 * @Date: 2020/11/6 11:54 */public interface UserService { List getUserList();} (接⼝实现类)package e;import ;import ample;import pper;import red;import e;import ;/** * @ClassName: UserServiceImpl * @Description: (描述) * @Author: WHT * @Version: V1.0 * @Date: 2020/11/6 11:55 */@Servicepublic class UserServiceImpl implements UserService { @Autowired private UserMapper userMapper; @Override public List getUserList() { return ByExample(new UserExample()); }}Mapper 数据持久化层 (此处逆向⼯程都可⽣成) (接⼝)package ;import ;import ample;import ;import ;import tory;@Repositorypublic interface UserMapper { List selectByExample(UserExample example);} 映射⽂件 and ${ion} and ${ion} #{} and ${ion} #{} and #{Value} and ${ion} #{listItem} as user_id, me as user_username, user.`password` as `user_password`,

as user_age, as user_sex, user.`status` as `user_status`, user.`date` as `user_date` Controller 控制层 控制层package ller;import ocessingException;import Mapper;import ;import rvice;import ry;import detail;import red;import ller;import tMapping;import seBody;import ;/** * @ClassName: UserController * @Description: (描述) * @Author: WHT * @Version: V1.0 * @Date: 2020/11/5 17:55 */@Controller@RequestMapping("/user")public class UserController { @Autowired private UserService userService; @ResponseBody @RequestMapping("list") public String getUserList() throws JsonProcessingException { List userList = rList(); ObjectMapper objectMapper = new ObjectMapper(); return alueAsString(userList); }}测试结果此时发现正常请求数据,实体类的所有属性及值都会返回![ { "id": 1, "username": "zhangsan", "password": "zs123", "age": 20, "sex": 0, "status": 0, "date": 16 }]添加使⽤注解后写法其他代码不需要修改,只需要给 实体类不想暴露出去的属性添加

@JsonIgnore 注解即可完美解决!修改后的实体类ckage ;import nore;import sConstructor;import ;import Constructor;import izable;import ;/** * @ClassName: User * @Description: (描述) * @Author: WHT * @Version: V1.0 * @Date: 2020/11/5 17:55 */@Data@NoArgsConstructor@AllArgsConstructorpublic class User implements Serializable { @JsonIgnore //加了注解 private Integer id; private String username; @JsonIgnore private String password; private Integer age; private Integer sex; @JsonIgnore private Integer status; @JsonIgnore private Date date; private static final long serialVersionUID = 1L;}此时可以发现我只有对

username 、

age 、

sex 三个属性没有添加注解!最后我们重启服务,重新测试查看结果!添加注解后测试结果亮点来了!最终测试发现,结果只有没有加注解的三个属性及对应的值,其余属性都没有返回![ { "username": "zhangsan", "age": 20, "sex": 0 }]注意⚠

发布者:admin,转转请注明出处:http://www.yc00.com/news/1687517267a16334.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信