网站监控的软件怎么做,亳州网站网站建设,东阳网站推广,2017网站开发前景新增文章分类
接口文档
业务实现
参数校验
文章分类列表
接口文档
业务实现
获取文章分类详情
接口文档
业务实现
更新文章分类
接口文档
业务实现
分组校验
问题
概念
实现步骤
总结
删除文章分类
接口文档
业务实现 该模块大部分请求的路径相同接口功能区分方式按请求方式不同而进行区分
文章分类业务表结构 新增文章分类 接口文档 业务实现 创建CategoryController控制类并编写实现方法 RestController //定义为控制类
RequestMapping(/category) //设置请求映射路径
public class CategoryController {Autowiredprivate CategoryService categoryService; //注入CategoryServicePostMappingpublic Result add(RequestBody Category category){categoryService.add(category);return Result.success();}
} 创建CategoryService接口并添加抽象方法 void add(Category category);
创建CategoryServiceimpl接口实现类 Service
public class CategoryServiceimpl implements CategoryService {Autowiredprivate CategoryMapper categoryMapper; //注入CategoryMapper接口Overridepublic void add(Category category) {//补充添加id属性值MapString,Object map ThreadLocalUtil.get();Integer id (Integer) map.get(id);category.setCreateUser(id);categoryMapper.add(category);Result.success();}
} 创建CategoryMapper接口用于操作mybatis Mapper
public interface CategoryMapper {//新增Insert(insert into category(category_name,category_alias,create_user,create_time,update_time) values(#{categoryName},#{categoryAlias},#{createUser},now(),now()) )void add(Category category);
}运行请求查看 数据库中已成功添加该记录 参数校验
用到上一篇讲到的对实体对象变量进行参数校验必须要传入有效参数 文章分类列表 接口文档 业务实现
编写CategoryController中的请求的方法 GetMappingpublic ResultListCategory list(){ListCategory cs categoryService.list();return Result.success(cs);}
编写CategoryService接口抽象方法 //列表ListCategory list();
编写CategoryServiceimpl接口实现类的方法 Overridepublic ListCategory list() {MapString,Object map ThreadLocalUtil.get();Integer id (Integer) map.get(id);return categoryMapper.list(id);}
编写CategoryMapper接口的方法 //查询列表Select(select * from category where create_user #{id})ListCategory list(Integer id); 运行请求查看 发现返回的日期格式有问题需要转换一下
在实体类日期属性变量上使用JsonFormat注解用于指定日期格式 重新运行项目再请求查看日期格式已指定好了 获取文章分类详情 接口文档 业务实现
编写CategoryController中的请求的方法 GetMapping(/detail)public ResultCategory detail(){Category c categoryService.findById();return Result.success(c);}
编写CategoryService接口抽象方法 //根据id查询信息Category findById(Integer id);
编写CategoryServiceimpl接口实现类的方法 Overridepublic Category findById(Integer id) {Category c categoryMapper.findById(id);return c;}
编写CategoryMapper接口的方法 //根据id查询信息Select(select * from category where id #{id})Category findById(Integer id);
运行请求查看 更新文章分类
接口文档 业务实现
在实体类中对id成员变量加上注解进行参数校验 编写CategoryController中的请求的方法 PutMappingpublic Result update(RequestBody Validated Category category){categoryService.update(category);return Result.success();}
编写CategoryService接口抽象方法 //更新分类void update(Category category);
编写CategoryServiceimpl接口实现类的方法 Overridepublic void update(Category category) {categoryMapper.update(category);}
编写CategoryMapper接口的方法 //更新分类Select(update category set category_name#{categoryName},category_alias#{categoryAlias},update_timenow() where id#{id})void update(Category category);
运行请求查看 分组校验
问题
对实体成员变量进行参数校验时不同的请求参数类型和需要的参数数量不同如果按照其中一个接口的规范写死那么另一个接口所需的类型参数就会冲突导致不通过。所以需要对不同的接口单独定义参数校验
概念
把校验项进行归类分组在完成不同的功能的时候校验指定组中的校验项定义分组定义校验项时指定归属的分组校验时指定要校验的分组 实现步骤
对添加文章和更新文章进行参数分组校验
在实体类中定义内部接口 对成员变量指定校验项分组 在接口方法传参时对属性指定分组 这样就分组好了然后请求参数也不会互相影响。 总结
在实体类内部定义接口来定义分组通过groups属性指定对校验项分组给Validated注解的value属性赋值用于指定分组校验项默认属于Default分组定义校验项时如果没有指定分组则属于Default分组分组可以继承 删除文章分类
接口文档 业务实现
编写CategoryController中的请求的方法 DeleteMappingpublic Result delete(Integer id){categoryService.delete(id);return Result.success();}
编写CategoryService接口抽象方法 //删除分类void delete(Integer id);
编写CategoryServiceimpl接口实现类的方法 Overridepublic void delete(Integer id) {categoryMapper.delete(id);}
编写CategoryMapper接口的方法 //删除分类Delete(delete from category where id #{id})void delete(Integer id);
运行请求查看 数据库中已成功删除