怎样搭建一个网站,室内设计培训班排行榜,wordpress 自定义主题,龙华网站制作公司总说
过程参考黑马程序员SpringBoot3Vue3全套视频教程#xff0c;springbootvue企业级全栈开发从基础、实战到面试一套通关_哔哩哔哩_bilibili
之前又偷懒几天。回老家没事干#xff0c;玩也玩不好#xff0c;一玩老是被家里人说。写代码吧还是#xff0c;他们都看不懂Vue3全套视频教程springbootvue企业级全栈开发从基础、实战到面试一套通关_哔哩哔哩_bilibili
之前又偷懒几天。回老家没事干玩也玩不好一玩老是被家里人说。写代码吧还是他们都看不懂也没法说我
目录
总说
一、功能实现
1.1 Controller层
1.2 Service层
1.3 Impl层
1.4 Mapper层
1.5 测试接口
二、参数校验
2.1 validation自定义校验
2.1.1 新建注解
2.1.2 新建校验
2.1.3 添加注解
2.1.4 测试检验 一、功能实现 参数详情 1.1 Controller层
创建ArticleController之前创建过了就不用创建了代码如下
RestController
RequestMapping(/article)
public class ArticleController {Autowiredprivate ArticleService articleService;PostMappingpublic Result add(RequestBody Article article){articleService.add(article);return Result.success();}
} 1.2 Service层
创建ArticleService代码如下
public interface ArticleService {//添加文章void add(Article article);
} 1.3 Impl层
创建ArticleServiceImpl代码如下
同时补充一些属性值
Service
public class ArticleServiceImpl implements ArticleService {Autowiredprivate ArticleMapper articleMapper;Overridepublic void add(Article article) {//补充属性值article.setCreateTime(LocalDateTime.now());// 创建时间article.setUpdateTime(LocalDateTime.now());// 更新时间MapString, Object map ThreadLocalUtil.get();Integer id (Integer)map.get(id);article.setCreateUser(id);// 用户idarticleMapper.add(article);}
} 1.4 Mapper层
创建ArticleMapper代码如下
Mapper
public interface ArticleMapper {//新增文章Insert(insert into article (title, content, cover_img, state, category_id, create_user, create_time, update_time) values (#{title}, #{content}, #{coverImg}, #{state}, #{categoryId}, #{createUser}, #{createTime}, #{updateTime}))void add(Article article);
} 1.5 测试接口
创建一个新接口如下 二、参数校验
上面的新增文章过程中没有对参数信息校验我们对参数的要求如下 来到pojo层的Article
2.1 validation自定义校验 2.1.1 新建注解
创建一个新目录anno
在这个目录下写一个注解State如下图 加入代码如下
Documented //元注解用于描述注解的元数据
//Target({ElementType.METHOD, ElementType.FIELD, ElementType.ANNOTATION_TYPE, ElementType.CONSTRUCTOR, ElementType.PARAMETER, ElementType.TYPE_USE})
Target({ElementType.FIELD}) //元注解用于描述注解的适用范围这里只用在属性上只留field
Retention(RetentionPolicy.RUNTIME)//元注解用于描述注解的生命周期这里只保留在运行时Constraint(validatedBy {StateValidation.class} ) //元注解用于指定是哪个类为该注解提供校验规则public interface State {//提供校验失败的提示信息String message() default state的参数值只能是已发布或者草稿;//指定分组Class?[] groups() default {};//指定负载获取到State注解的附加信息Class? extends Payload[] payload() default {};
} 2.1.2 新建校验
创建一个新目录validation
在这个目录下写一个注解StateValidation如下图 代码如下
//a,b 第一个参数a是表示给哪个注解提供校验规则第二个参数b是表示校验的数据类型
public class StateValidation implements ConstraintValidatorState, String {//value是将来要校验的数据Overridepublic boolean isValid(String value, ConstraintValidatorContext constraintValidatorContext) {//提供校验规则//returnfalse校验不通过true校验通过if(value null)return false;if(value.equals(已发布) || value.equals(草稿))return true;return false;}}
2.1.3 添加注解
我们来带pojo层的Article修改代码如下
Data
public class Article {private Integer id;//主键ID//1~10个非空字符NotEmptyPattern(regexp ^\\S{1,10}$)private String title;//文章标题NotEmptyprivate String content;//文章内容NotEmptyURLprivate String coverImg;//封面图像Stateprivate String state;//发布状态 已发布|草稿NotNullprivate Integer categoryId;//文章分类idprivate Integer createUser;//创建人IDprivate LocalDateTime createTime;//创建时间private LocalDateTime updateTime;//更新时间
}
2.1.4 测试检验
我们将state的值删去得到结果如下 将结果上传git保存