springBoot常用注解

1、校验类注解

1.1 后端 —> 前端

@JsonIgnore   // 返回json数据时(实体序列化,即@ResponseBody), 实体类标注有该注解,将不会返回该属性

1.2 前端 —> 后端

@Valid // 启用过滤
@NotBlank(message = "名称不能为空") //标注这个注解,其属性不能为null,需搭配@Valid
@Pattern(regexp="^[\\u4e00-\\u9fa5a-zA-Z0-9]{1,64}$",message="正则表达式")

2、JSON 序列化、反序列化的注解

2.1 @DateTimeFormat和@JsonFormat的区别

@JsonFormat(pattern = DateUtil.DATE_TIME_PATTERN) // 后 -> 前,  Date -> JsonString
private Date startTime;

@DateTimeFormat(pattern = DateUtil.DATE_TIME_PATTERN) // 前 -> 后, JsonString -> Date
private Date startTime;

/**
* 一、功能: @DateTimeFormat和@JsonFormat都是处理时间格式化问题的,把其他类型转换成自己需要的时间类型。
  二、导包:  @DateTimeFormat和@JsonFormat分别属于spring和jackson,所以我们需要导入相应的包。
  三、区别:
		来源的包不同,作用也不同:
			@DateTimeFormat是spring包里面的注解,作用是接收从页面传到后台的日期值;
			@JsonFormat是jackson包里面的注解,作用是从后台向前台传递日期值;
		使用@DateTimeFormat时,前台向后台传数据,必须要使用url拼接参数的方式才生效;
  四、注意: 
  	  4.1 @JsonFormat只是在将实体返回给前端JSON格式数据时才有效的转换为(yyyy-MM-dd HH:mm:ss)格式的时间,
  	  其他时候日期格式不会被转换。 例如使用了控制器使用@ResponseBody序列化 或在JSON序列化时 JSON.toJsonString()
  	  4.2 使用@DateTimeFormat时,前台向后台传数据,必须要使用url拼接参数的方式才生效;
*/

2.2 @JsonDeserialize

// json反序列化处理
@JsonDeserialize(using = Boolean2IntegerDeserializer.class)
private Integer isEnabled;

/**
 * 反序列化处理
 * 

* Integer类型字段转Boolean, (0,1) ==> (false,true)) *

* @date 2023/1/6 9:55 */
public class Boolean2IntegerDeserializer extends JsonDeserializer<Integer> { @Override public Integer deserialize(JsonParser jp, DeserializationContext ctxt) throws IOException { // 拿到jsonString该字段的值(字符串) String stringValue = jp.getText(); if (Objects.nonNull(stringValue)) { if ("true".equalsIgnoreCase(stringValue) || "false".equalsIgnoreCase(stringValue)){ return "true".equalsIgnoreCase(stringValue) ? 1 : 0; }else if (NumberUtil.isNumber(stringValue)){ return Integer.parseInt(stringValue); }else { throw new JsonParseException(jp, "json 转换异常, 无法解析的字段类型!"); } } // 如果为空, 默认返回0 return 0; } }

springBoot常用注解_第1张图片
链接: json中的日期格式化@JsonFormat、@DateTimeFormat jackjson,fastjson,gson等

你可能感兴趣的:(spring,boot,java,后端)