一.介绍@JsonInclude()
1.在类上加入@JsonInclude(value = JsonInclude.Include.NON_NULL),表明该类为NULL的字段不参加序列化!
2.将该标记放在属性上,如果该属性为NULL则不参与序列化 !
3.如果放在类上边,那对这个类的全部属性起作用 !
二.参数介绍
nclude.Include.ALWAYS -------------->默认
Include.NON_DEFAULT ------------->属性为默认值不序列化
Include.NON_EMPTY ---------------->属性为 空(“”) 或者为 NULL 都不序列化
Include.NON_NULL ------------------>属性为NULL 不序列化
三.用mybatis-plus查询指定字段,且为null的字段去除
1如下看到非常多的用户信息,比如我们要用mybatis查询指定用户字段怎么查询呢,就得用@JsonInclude()注解了
用户实体类:
/**
* 用户表
*/
@Data
@Builder
@AllArgsConstructor
@NoArgsConstructor
@TableName(value = "tb_user")
@JsonInclude(JsonInclude.Include.NON_NULL)
public class User implements Serializable {
/**
* 主键
*/
@TableId(value = "id", type = IdType.INPUT)
private Long id;
/**
* 用户编号
*/
@TableField(value = "code")
private String code;
/**
* 账号
*/
@TableField(value = "account")
private String account;
/**
* 密码
*/
@TableField(value = "password")
private String password;
/**
* 手机
*/
@TableField(value = "phone")
private String phone;
/**
* 昵称
*/
@TableField(value = "name")
private String name;
/**
* 真名
*/
@TableField(value = "real_name")
private String realName;
/**
* 头像
*/
@TableField(value = "avatar")
private String avatar;
/**
* 邮箱
*/
@TableField(value = "email")
private String email;
/**
* 生日
*/
@TableField(value = "birthday")
private Date birthday;
/**
* 性别
*/
@TableField(value = "sex")
private Short sex;
/**
* 创建时间
*/
@TableField(value = "create_time")
private Date createTime;
/**
* 修改时间
*/
@TableField(value = "update_time")
private Date updateTime;
/**
* 状态(0:不可用,1:可用)
*/
@TableField(value = "status")
private Integer status;
/**
* 是否已删除
*/
@TableField(value = "is_deleted")
private Integer isDeleted;
private static final long serialVersionUID = 1L;
}
2.controller
/**
* 根据id查询用户详情
*/
@GetMapping("/findUserInfoDetails/{id}")
public Result<Object> findUserInfoDetails(@PathVariable("id") Long userId){
return Result.ok(userService.findUserInfoDetails(userId));
}
3.service接口
/**
* 根据用户id查询用户详情
* @param userId
* @return
*/
User findUserInfoDetails(Long userId);
4.service实现类
/**
* 根据用户id查询用户详情
* @param userId
* @return
*/
@Override
public User findUserInfoDetails(Long userId) {
User user = userMapper.selectOne(new LambdaQueryWrapper<User>().select(User::getId, User::getName, User::getEmail, User::getBirthday, User::getSex).eq(User::getId,userId));
return user;
}
5.这里使用的是mybatis-plus2查询的,解释一下怎么代码
6.在用户实体类上不加注解@JsonInclude()查询出来的数据如下:
有看到我们只是查询我们想要的数据,但是那些我们没查询的数据也返回给我们了
7.在用户实体类上加注解@JsonInclude()的查询结果
这就是我们想要的结果

版权声明:本文为javaeEEse原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。