当前位置: 首页 > article >正文

更新文章分类

总说

过程参考黑马程序员SpringBoot3+Vue3全套视频教程,springboot+vue企业级全栈开发从基础、实战到面试一套通关_哔哩哔哩_bilibili

目录

总说

一、功能实现

1.1 Controller层

1.2 Service层

1.3 Impl层

1.4 Mapper层

1.5 pojo层

1.6 测试接口

二、优化

2.1 参数校验优化

2.2 细节优化


一、功能实现

根据id来进行查找

1.1 Controller层

来到CategoryController

添加代码如下:

    //更新分类
    @PutMapping
    public Result update(@RequestBody @Validated Category category){
        categoryService.update(category);
        return Result.success();
    }

1.2 Service层

来到CategoryService,添加代码如下:

//更新分类
void update(Category category);

1.3 Impl层

来到CategoryServiceImpl,添加代码如下:

@Override
public void update(Category category) {
    category.setUpdateTime(LocalDateTime.now());// 更新时间
    categoryMapper.update(category);
}

1.4 Mapper层

来到CategoryMapper,添加代码如下:

//更新分类
@Update("update category set category_name = #{categoryName},category_alias = #{categoryAlias},update_time = #{updateTime} where id = #{id}")
void update(Category category);

1.5 pojo层

来到pojo层的category, 在id上面添加注解如下:

进行参数检验

1.6 测试接口

创建一个新的测试接口

如下图所示:

id和name要和数据库中一条数据相对应,

二、优化

2.1 参数校验优化

由于我们添加参数校验是直接添加到pojo里的,由于实体类是共用的,在pojo的字段上面直接添加参数校验,可能会影响到其他接口的正常使用。

在刚刚的更新操作中,我们对id的参数校验不为空,但是我们之前的添加操作不需要传入id,id自增长,但是不传入id无法进行下一步了。

解决的办法就是对校验的方法进行分组。

在pojo中,定义不同分组项目

然后在注解中选择分组,可以选择多个分组

在检验时,也表明分组即可

先来定义分组。

来到pojo层的Category,定义两个接口add和update,再在上面注解中添加分组,如下:

@Data
public class Category {

    //添加分组
    @NotNull(groups = Update.class)
    private Integer id;//主键ID

    //多个分组用{}
    @NotEmpty(groups = {Add.class,Update.class})
    private String categoryName;//分类名称

    @NotEmpty(groups = {Add.class,Update.class})
    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;//更新时间

    //分组接口add
    public interface Add{
    }
    //分组接口update
    public interface Update{
    }
}

来到CategoryController,在add方法中的注解添加相应分组Add

在add方法中修改如下:

public Result add(@RequestBody @Validated({Category.Add.class}) Category category)

在update方法中修改如下:添加Update分组

//更新分类
@PutMapping
public Result update(@RequestBody @Validated({Category.Update.class}) Category category){
    categoryService.update(category);
    return Result.success();
}

然后我们来进行测试添加接口:

这里我们不需要传入id,如果不分组,像我们之前要是在id上面添加注解,这里就必须传入id

在测试一下更新接口,id和name要和数据库中的对应:

2.2 细节优化

来到pojo层的Category

规定

某个校验项目没有指定分组,默认为Default分组

分组之间可以继承,A extends B,那么A中拥有B中所有的校验项

那么代码如下:

@Data
public class Category {

    //添加分组
    @NotNull(groups = Update.class)
    private Integer id;//主键ID

    @NotEmpty
    private String categoryName;//分类名称

    @NotEmpty
    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;//更新时间

    //如果说某个校验项没有指定分组,默认属于Default分组
    //分组之间可以继承, A extends B  那么A中拥有B中所有的校验项

    //分组接口add
    public interface Add extends Default{
        
    }

    //分组接口update
    public interface Update extends Default{

    }
}

categoryName和categoryAlias都属于Default分组了,而Add分组和Update分组都继承了Default分组的内容,所以都包含了categoryName和categoryAlias

而id只属于Update分组。

再次进行测试:

最后上传git保存一下


http://www.kler.cn/a/523731.html

相关文章:

  • SQL UCASE() 函数详解
  • LeetCode热题100中 17. 20. 53. 78. 215.
  • Android createScaledBitmap与Canvas通过RectF drawBitmap生成马赛克/高斯模糊(毛玻璃)对比,Kotlin
  • Cannot resolve symbol ‘XXX‘ Maven 依赖问题的解决过程
  • HTML<kbd>标签
  • wow-agent---task4 MetaGPT初体验
  • 在sortablejs的拖拽排序情况下阻止input拖拽事件
  • 解决报错“The layer xxx has never been called and thus has no defined input shape”
  • Vue 3 中的 TypeScript:接口、自定义类型与泛型
  • Android View 的事件分发机制解析
  • JS中的Date()操作与易错点
  • 磁珠的选型以及变压器气隙问题
  • Ubuntu 20.04 Realtek 8852无线网卡驱动
  • 接口技术-第4次作业
  • C/C++中的#define和const的特点与区别
  • Baklib如何重塑内容中台的智能化推荐系统实现个性化服务
  • 《Java核心技术 卷II》日期和时间API的时间线
  • 马尔科夫模型和隐马尔科夫模型区别
  • PostGIS笔记:PostgreSQL中表、键和索引的基础操作
  • 蛇年 | 巳巳如意,生生不息
  • 2025金蛇迎春,和数集团祝您新年快乐,蛇年大吉
  • 【机器学习】自定义数据集 使用pytorch框架实现逻辑回归并保存模型,然后保存模型后再加载模型进行预测
  • Java中ExecutorService接口介绍、应用场景和示例代码
  • 如何运用python爬虫爬取百度贴吧的静态图片?
  • 懂球短视频微信小程序SpringBoot+论文源码调试讲解
  • 06-AD向导自动创建P封装(以STM32-LQFP48格式为例)