【第9章】SpringBoot实战篇之文章分类(下)


前言

上篇文件介绍了新增文章分类,本章主要介绍:

  • 获取文章分类列表
  • 获取文章分类详情
  • 更新文章分类
  • 删除文章分类
  • 更新和新增文章分类(分组校验)

一、获取文章分类列表

1. CategoryController

@RestController
public class CategoryController {
    @Autowired
    CategoryService categoryService;
    @GetMapping("/category")
    public Result<List<Category>> queryList(){
        Map<String, Object> claims =ThreadLocalUtil.get();
        Integer userId = (Integer) claims.get("userId");
        List<Category> categories = categoryService.selectList(userId);
        return Result.success(categories);
    }
}

2. service

public interface CategoryService {
    public List<Category> selectList(Integer userId);
}
@Service
public class CategoryServiceImpl implements CategoryService{
    @Autowired
    CategoryMapper categoryMapper;

    public List<Category> selectList(Integer userId) {
        QueryWrapper<Category> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("create_user",userId);
        return categoryMapper.selectList(queryWrapper);
    }
}

3. Category

package org.example.springboot3.bigevent.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.validation.constraints.NotEmpty;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import java.time.LocalDateTime;

@Getter
@Setter
@ToString
public class Category {
    @TableId(type= IdType.AUTO)
    private Integer id;//主键ID
    @NotEmpty(message = "分类名称不能为空")
    private String categoryName;//分类名称
    @NotEmpty(message = "分类别名不能为空")
    private String categoryAlias;//分类别名
    private Integer createUser;//创建人ID
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;//创建时间
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;//更新时间
}

4. 测试

在这里插入图片描述

二、获取文章分类详情(单条)

1.CategoryController

@RestController
@RequestMapping("/category")
public class CategoryController {
    @Autowired
    CategoryService categoryService;
    @GetMapping("detail")
    public Result<Category> detail(Integer id){
        Map<String, Object> claims =ThreadLocalUtil.get();
        Integer userId = (Integer) claims.get("userId");
        Category categories = categoryService.selectOne(id,userId);
        return Result.success(categories);
    }
}

2.CategoryService

public interface CategoryService {
    public int add(Category category);
    public List<Category> selectList(Integer userId);

    Category selectOne(Integer id,Integer userId);
}
@Service
public class CategoryServiceImpl implements CategoryService{
    @Autowired
    CategoryMapper categoryMapper;
    @Override
    public Category selectOne(Integer id, Integer userId) {
        QueryWrapper<Category> queryWrapper = new QueryWrapper<>();
        queryWrapper.eq("id",id);
        queryWrapper.eq("create_user",userId);
        return categoryMapper.selectOne(queryWrapper);
    }
}

3. 测试

在这里插入图片描述

三、更新文章分类

1.CategoryController

@RestController
@RequestMapping("/category")
public class CategoryController {
@PutMapping
    public Result update(@RequestBody @Validated Category category){
        Map<String, Object> claims =ThreadLocalUtil.get();
        Integer userId = (Integer) claims.get("userId");
        category.setCreateUser(userId);
        int i = categoryService.update(category);
        if(i!=1){
            return Result.error("更新文章分类失败");
        }
        return Result.success("更新文章分类成功");
    }
}

2.CategoryService

public interface CategoryService {
    public int add(Category category);
    public List<Category> selectList(Integer userId);

    Category selectOne(Integer id,Integer userId);

    public int update(Category category) ;
}
@Service
public class CategoryServiceImpl implements CategoryService{
    @Autowired
    CategoryMapper categoryMapper;
@Override
    public int update(Category category) {
        UpdateWrapper<Category> wrapper = new UpdateWrapper<>();
        wrapper.set("category_name",category.getCategoryName());
        wrapper.set("category_alias",category.getCategoryAlias());
        wrapper.set("update_time",LocalDateTime.now());
        wrapper.eq("id",category.getId());
        wrapper.eq("create_user",category.getCreateUser());
        return categoryMapper.update(wrapper);
    }
}

3.测试

在这里插入图片描述
在这里插入图片描述

四、删除文章分类

1.CategoryController

@RestController
@RequestMapping("/category")
public class CategoryController {
    @Autowired
    CategoryService categoryService;
    @DeleteMapping
    public Result delete(Integer id){
        Map<String, Object> claims =ThreadLocalUtil.get();
        Integer userId = (Integer) claims.get("userId");
        int i = categoryService.delete(id,userId);
        if(i!=1){
            return Result.error("删除文章分类失败");
        }
        return Result.success("删除文章分类成功");
    }
}

2. CategoryService

public interface CategoryService {
    public int delete(Integer id, Integer userId);
}
@Service
public class CategoryServiceImpl implements CategoryService{
    @Autowired
    CategoryMapper categoryMapper;
@Override
    public int delete(Integer id, Integer userId) {
        UpdateWrapper<Category> wrapper = new UpdateWrapper<>();
        wrapper.eq("id",id);
        wrapper.eq("create_user",userId);
        return categoryMapper.delete(wrapper);
    }
}

3.测试

在这里插入图片描述

在这里插入图片描述

五、更新和新增文章分类(分组校验)

1. 定义分组

package org.example.springboot3.bigevent.valid;

import jakarta.validation.groups.Default;

/**
 * Create by zjg on 2024/5/26
 */
public class ValidatedGroups {
    public interface Insert extends Default {};
    public interface Delete extends Default {};
    public interface Update extends Default {};
    public interface Selete extends Default {};
}

2. 使用分组

package org.example.springboot3.bigevent.entity;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
import org.example.springboot3.bigevent.valid.ValidatedGroups;
import java.time.LocalDateTime;

@Getter
@Setter
@ToString
public class Category {
    @NotNull(message = "id不能为空",groups = {ValidatedGroups.Update.class})
    @TableId(type= IdType.AUTO)
    private Integer id;//主键ID
    @NotEmpty(message = "分类名称不能为空")
    private String categoryName;//分类名称
    @NotEmpty(message = "分类别名不能为空")
    private String categoryAlias;//分类别名
    private Integer createUser;//创建人ID
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime createTime;//创建时间
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime updateTime;//更新时间
}

3. 使用分组校验

查询和删除都是接收单个id参数,保证id不为空即可完成对应功能,多参数使用方式可参考新增。

@PostMapping
public Result add(@RequestBody @Validated(ValidatedGroups.Insert.class) Category category){
    Map<String, Object> claims = ThreadLocalUtil.get();
    Integer userId = (Integer) claims.get("userId");
    category.setCreateUser(userId);
    int i = categoryService.add(category);
    if(i!=1){
        return Result.error("新增文章分类失败,请稍后重试!");
    }
    return Result.success("新增文章分类成功");
}
@PutMapping
public Result update(@RequestBody @Validated(ValidatedGroups.Update.class) Category category){
    Map<String, Object> claims =ThreadLocalUtil.get();
    Integer userId = (Integer) claims.get("userId");
    category.setCreateUser(userId);
    int i = categoryService.update(category);
    if(i!=1){
        return Result.error("更新文章分类失败");
    }
    return Result.success("更新文章分类成功");
}

总结

回到顶部

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值