黑马springboot3+vue学习记录

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 

  • 10
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SpringBoot+SpringSecurity+Vue中实现动态路由的过程如下: 1. 在后端(SpringBoot)中,首先需要定义一个权限表,用于存储所有的权限信息,包括权限名称、权限标识等。 2. 在前端(Vue)中,需要定义一个路由表,用于存储所有的路由信息,包括路由路径、组件名称等。 3. 后端需要提供一个接口,用于获取当前用户的权限列表。该接口会根据用户的角色查询对应的权限,并返回给前端。 4. 前端在登录成功后,会调用后端接口获取当前用户的权限列表,并将权限列表存储到本地(如localStorage或vuex)中。 5. 前端在路由跳转时,会根据当前用户的权限列表动态生成路由。可以通过遍历权限列表,根据权限标识匹配路由表中的路由信息,将匹配到的路由添加到路由表中。 6. 前端在生成路由后,需要使用Vue Router的addRoutes方法将动态生成的路由添加到路由表中。 7. 前端在路由跳转时,会根据用户的权限判断是否有权限访问该路由。可以通过导航守卫的beforeEach方法,在路由跳转前进行权限判断。 8. 后端可以使用Spring Security的注解对接口进行权限控制。可以通过在接口上添加注解,指定需要的权限才能访问该接口。 9. 后端在接口调用时,可以通过从redis中获取当前用户的权限列表,并进行权限判断。 10. 前端和后端通过接口交互,实现动态路由的权限控制。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值