Springboot后段实现文章分类相关接口
2.文章分类相关接口
2.1文章分类列表
2.1.1基本信息
2.1.2请求参数
无
2.1.3响应数据
响应数据类型:application/json
响应参数说明:
响应数据样例:
{"code":0,"message":"操作成功","data":[{"id":1,"categoryName":"风土人情","categoryAlias":"ftrq","createUser":5,"createTime":"2024-01-14T23:24:47","updateTime":"2024-01-16T23:39:56"}]}
功能实现:
我在这个功能上设置了请求参数,因为是获取登陆用户的所有文章分类,所以使用getmapping,同时设置实现该方法的路由为“/get”。
响应数据返回的是对象数据,我们在创建controller层方法时,设置返回值为响应功能的对象category并且是很多条数据,所以就要使用到list集合。
因为是获取数据,所以传入的参数为空。
具体controller层参数如下:
@GetMapping("/get") private Result<List<Category>> listinfo() { List<Category> li = categoryService.info(); return Result.success(li); }
创建完controller层之后就是service层的实现,这里跳过service层,直接进入到serviceimpl。
因为我们文章分类数据库中有一栏是create_user(创建人id),功能是查找已登陆的用户下所有的文章分类,所以我们sql语句中应该是要使用到已登陆用户的ID。所以我们在service层中获取到已登陆用户的id,并且把用户ID传入。
具体serviceimpl代码如下:
@Override public List<Category> info() { Map<String,Object> map = ThreadLocalUtil.get(); Integer id = (Integer) map.get("id"); return categoryMapper.info(id); }
接下来就是mapper层的代码,get请求就是获取信息,所以sql语句应该添加select注解。
具体代码如下:
@Select("select * from category where create_user = #{id}") List<Category> info(Integer id);
以上便是获取文章分类的代码实现
2.2新增文章分类
2.2.1基本信息
2.2.2请求参数
请求参数格式:application/json
请求参数说明:
请求数据样例:
{"categoryName" : " 人文 " ,"categoryAlias" : "rw"}
2.2.3响应数据
响应数据类型:application/json
响应参数说明:
响应数据样例:
{"code" : 0 ,"message" : " 操作成功 " ,"data" : null}
功能实现:
我在这个功能上设置了请求参数,因为是新增文章分类,所以使用postmapping,同时设置实现该方法的路由为“/add”。
响应数据返回的是操作成功。
因为是新增数据,所以需要有参数,又因为我们是想新增文章分类,那么就要把文章分类实体类中所拥有的所有属性都传入进去,所以我们传入的应该是一个实体类category,因为传入的时候是json格式,所以我们应该在传入参数前增加@RequestBody注解。
具体controller层参数如下:
@PostMapping("/add") public Result add(@RequestBody Category category) { categoryService.add(category); return Result.success(); }
创建完controller层之后就是service层的实现,这里跳过service层,直接进入到serviceimpl。
有些实体类中的数据是我们可以直接内部提供的,所以不需要前端向我们提供,比如create_user(创建人id),创建时间,更新时间。所以我们在service层进行提供,create_user获取与上面获取文章分类中的代码相同,时间是使用LocalDatetime.now()方法。
具体serviceimpl代码如下:
@Override public void add(Category category) { Map<String,Object> map = ThreadLocalUtil.get(); Integer id = (Integer) map.get("id"); category.setCreateUser(id); category.setCreateTime(LocalDateTime.now()); category.setUpdateTime(LocalDateTime.now()); categoryMapper.add(category); }
接下来就是mapper层的代码,新增文章分类就是新增信息,所以sql语句应该添加Insert注解。
具体代码如下:
@Insert("insert into category (category_name,category_alias,create_user,create_time,update_time)" + "values(#{categoryName},#{categoryAlias},#{createUser},#{createTime},#{updateTime})") void add(Category category);
以上便是新增文章分类的代码实现
2.3更新文章分类
更新文章分类我主要是使用@Putmapping,在这我们设定路由为(“/update”)。
首先对更新方法进行简单的分析,想要对文章分类进行更新,那我们肯定是要提供一个新的文章分类实体类,所以我们传入的参数就是category,又由于是json格式,所以我们在参数前面添加@RequestBody注解。那返回值又是什么呢?更新完文章分类之后,我们返回一个成功操作即可,所以返回值就是Result。
具体的controller层代码如下
@PutMapping("/update") public Result update(@RequestBody Category category) { categoryService.update(category); return Result.success(); }
那么service层中,由于我们更改过了某个文章分类数据,所以我们需要对其中的更新时间参数进行变更 ,我们直接使用get方法对其进行变更。同时需要对mapper层中传入实体类category。具体service层中的代码如下。
@Override public void update(Category category) { category.setUpdateTime(LocalDateTime.now()); categoryMapper.update(category); }
在mapper中,因为我们时更新,所以使用@Update注解,具体的sql语句如下
@Update("update category set category_name = #{categoryName},category_alias = #{categoryAlias}," + "update_time = #{updateTime} where id = #{id}") void update(Category category);
以上便是更新文章分类的代码。
2.4获取文章分类详情
获取文章分类详情,所以我们采用@Getmapping,这个路由使用(“/detail”)。
首先我们知道要获取文章分类详情,我们要通过主键文章分类ID来进行获取数据,所以我们应该传入ID,获取出来的详情时实体类格式,所以我们返回值设置为category实体类。
具体的controller层代码如下:
@GetMapping("/detail") public Result<Category> detail(Integer id) { Category category = categoryService.detail(id); return Result.success(category); }
service层就需要调用mapper层来进行操作,代码如下:
@Override public Category detail(Integer id) { Category category = categoryMapper.detail(id); return category; }
mapper层中使用@Select进行操作数据库,具体代码如下:
@Select("select * from category where id =#{id}") Category detail(Integer id);
以上便是获取文章分类详情的代码。
2.5删除文章分类
删除文章分类,使用@Deletemapping,路由使用(“/delete”)。
根据前端传入的ID来进行删除对应文章分类。返回的数据类型就是操作成功即可。
具体代码如下:
@DeleteMapping("/delete") public Result delete(Integer id) { categoryService.delete(id); return Result.success(); }
service层就需要调用mapper层来进行操作,代码如下:
@Override public void delete(Integer id) { categoryMapper.delete(id); }
mapper层中使用@Delete来进行删除文章分类,代码如下:
@Delete("delete from category where id = #{id}") void delete(Integer id);
以上便是所有文章分类相关接口的代码实现!
这一章完结!!谢谢大家的观看!
参考的是黑马培训视频:【黑马程序员SpringBoot3+Vue3全套视频教程,springboot+vue企业级全栈开发从基础、实战到面试一套通关】https://www.bilibili.com/video/BV14z4y1N7pg?p=42&vd_source=f90c9a81105bce1295ef91cc1add93db