validator-api校验注解
一、日期格式校验注解@DateValue
@DateValue(
message = "", //返回信息
groups = {}, //校验分组
payload ={}, //有效载荷
format = "", //校验格式
required = true //是否必填,true(必填) false(选填)
)
1.message参数自定义返回信息。
message参数设置返回错误信息,默认为"“日期格式不正确,正确格式应为yyyy-MM-dd”"
2.groups参数添加参数校验分组
例:groups={add.class,edit.class}
3.payload参数定义有效载荷
4.format参数定义日期校验的格式
参数默认格式为"yyyy-MM-dd HH:mm:ss"
例:
- format=“yyyy/mm/dd HH:mm:ss”
- format=“yyyy-mm-dd”
- format=“HH-mm-ss”
5.required参数设置该字段是否必填
参数类型为boolean,默认为true(必填)。
示例
@ChineseDescription("创建时间")
@DateValue(
message = "正确格式应为yyyy/mm/dd",
groups = {add.class,edit.class}, //添加和删除时进行校验的分组
format = "yyyy/mm/dd",
required = true
)
private String createTime; //传入参数为字符串
当传入createTime="20211212"时,提示错误信息
{
"success": false,
"code": "A1506",
"message": "参数校验失败,请检查参数的传值是否正确,具体信息:正确格式应为yyyy/mm/dd",
"data": null,
"exceptionClazz": null,
"exceptionTip": null,
"exceptionPlace": null
}
值得一提的是,如果只定义了日期的格式,当传入字符串包含时间格式时,按照默认的时间格式进行校验;
而当只定义了时间的格式,传入日期格式将返回错误信息。
二、删除标识校验注释@FlagValue
@FlagValue(
message = "", //返回信息
groups = {}, //校验分组
payload = {}, //有效载荷
required = true //是否必填 true(必填) false(选填)
)
1.message
默认为"不正确的flag标识,请传递Y或者N"
···其余同上···
示例
/*删除标志*/
@ChineseDescription("删除标志")
@FlagValue(
groups = {delete.class}, //删除时进行校验
required = true
)
private String delFlag;
当传入delFlag="X"时,提示错误信息
{
"success": false,
"code": "A1506",
"message": "参数校验失败,请检查参数的传值是否正确,具体信息:不正确的flag标识,请传递Y或者N",
"data": null,
"exceptionClazz": null,
"exceptionTip": null,
"exceptionPlace": null
}
三、手机号码格式校验@PhoneValue
该校验注释自动过滤,过滤条件为11位字符串及属于数字
@PhoneValue(
message = "", //返回信息
groups = {}, //校验分组
payload = {}, //有效载荷
required = true //是否必填 true(必填) false(选填)
)
1.message参数自定义返回信息
message参数设置返回错误信息,默认为"手机号码格式不正确"
···其余同上···
示例
/*手机号*/
@ChineseDescription("手机号码")
@PhoneValue(
groups = {add.class,edit.class} //添加和修改时进行校验
)
private String phoneNumber;
当传入大于或小于11位字符串时,如phoneNumber=“123456789abc”,提示错误信息
{
"success": false,
"code": "A1506",
"message": "参数校验失败,请检查参数的传值是否正确,具体信息:手机号码格式不正确",
"data": null,
"exceptionClazz": null,
"exceptionTip": null,
"exceptionPlace": null
}
当传入11位字符串时,如phoneNumber=“123456789abc”,则请求成功;但该校验注释自动剔除除数字以外的字符,所以存入数据库内数据为
四、状态标识校验注释@StatusValue
@StatusValue(
message = "", //返回信息
groups = {}, //校验分组
payload = {}, //有效载荷
required = false //是否必填 true(必填) false(选填)
)
1.message参数自定义返回信息
message参数设置返回错误信息,默认为"不正确的状态标识"
···其余同上···
示例
@StatusValue(groups = {add.class,edit.class})
private Integer status;
默认状态标识为1和2,当传入status=0时,提示错误信息
{
"success": false,
"code": "A1506",
"message": "参数校验失败,请检查参数的传值是否正确,具体信息:不正确的状态标识",
"data": null,
"exceptionClazz": null,
"exceptionTip": null,
"exceptionPlace": null
}
五、字段唯一校验注释@TableUniqueValue
@TableUniqueValue(
message = "名称存在重复", //返回信息
groups = {add.class,edit.class}, //校验分组
payload= {} //有效载荷
tableName = "", //表名称
columnName = "", //列名称
idFieldName = "", //数据库主键id的字段名
excludeLogicDeleteItems = true //逻辑删除校验 默认为false(关闭)
logicDeleteFieldName ="", //逻辑删除的字段名称
logicDeleteValue = "" //默认逻辑删除的值
)
1.message参数自定义返回信息
message参数设置返回错误信息,默认为"库中存在重复编码,请更换该编码值"
2.tableName参数设置需要唯一字段的表名称
例:tableName=“t_student”
3.columnName参数设置需要唯一字段名
例:columnName=“name”
4.idFieldName参数设置数据库主键ID的字段名
例:idFieldName=“student_id”
5.excludeLogicDeleteItems参数设置是否开启逻辑删除校验
参数类型为boolean,默认关闭(false)
6.logicDeleteFieldName参数设置逻辑删除的字段名称
参数默认为String DEFAULT_LOGIC_DELETE_FIELD_NAME = “del_flag”
7.logicDeleteValue参数设置默认逻辑删除的值
参数默认为String DEFAULT_LOGIC_DELETE_FIELD_VALUE = “Y”
示例
@NotBlank(message = "板块名称不能为空",groups = {add.class,edit.class})
@ChineseDescription("板块名称")
@TableUniqueValue(
message = "板块名称重复",
groups = {add.class,edit.class},
tableName = "t_plate_type",
columnName = "plate_type_name",
idFieldName = "plate_type_id",
excludeLogicDeleteItems = true
//这里由于笔者程序所设置删除标志和值与默认字段名称一致所以不必设置其他参数
)
private String plateTypeName;
当传入名称已存在时,返回错误信息
{
"success": false,
"code": "A1506",
"message": "参数校验失败,请检查参数的传值是否正确,具体信息:板块名称重复",
"data": null,
"exceptionClazz": null,
"exceptionTip": null,
"exceptionPlace": null
}
当名称不重复时,则请求成功
{
"success": true,
"code": "00000",
"message": "请求成功",
"data": null
}