Spring Boot 笔记 015 创建接口_更新文章分类
1.1.1 实体类id增加NotNull注释,并做分组校验
1.1.1.1 定义分组
1.1.1.2 实体类中指定校验项属于哪个分组
如果说某个校验项没有指定分组,默认属于Default分组 分组之间可以继承, A extends B 那么A中拥有B中所有的校验项
package com.geji.pojo;import com.fasterxml.jackson.annotation.JsonFormat;
import jakarta.validation.constraints.NotEmpty;
import jakarta.validation.constraints.NotNull;
import jakarta.validation.groups.Default;
import lombok.Data;import java.time.LocalDateTime;@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;//更新时间//如果说某个校验项没有指定分组,默认属于Default分组//分组之间可以继承, A extends B 那么A中拥有B中所有的校验项public interface Add extends Default {}public interface Update extends Default {}
}
1.1.1.3 Controller中指定校验分组
package com.geji.controller;import com.geji.pojo.Category;
import com.geji.pojo.Result;
import com.geji.service.CategoryService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.validation.annotation.Validated;
import org.springframework.web.bind.annotation.*;import java.util.List;@RestController
@RequestMapping("/category")
public class CategoryController {@Autowiredprivate CategoryService categoryService;@PostMappingpublic Result add(@RequestBody @Validated(Category.Add.class) Category category) {categoryService.add(category);return Result.success();}@GetMappingpublic Result<List<Category>> list(){List<Category> cs = categoryService.list();return Result.success(cs);}@GetMapping("/detail")public Result<Category> detail(Integer id){Category c = categoryService.findById(id);return Result.success(c);}@PutMappingpublic Result update(@RequestBody @Validated(Category.Update.class) Category category){categoryService.update(category);return Result.success();}}
1.1.2 Service
package com.geji.service;import com.geji.pojo.Category;import java.util.List;public interface CategoryService {void add(Category category);List<Category> list();Category findById(Integer id);void update(Category category);
}
1.1.3 ServiceImpl
package com.geji.service.impl;import com.geji.mapper.CategoryMapper;
import com.geji.pojo.Category;
import com.geji.service.CategoryService;
import com.geji.utils.ThreadLocalUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;@Service
public class CategoryServiceImpl implements CategoryService {@Autowiredprivate CategoryMapper categoryMapper;@Overridepublic void add(Category category) {//补充属性值category.setCreateTime(LocalDateTime.now());category.setUpdateTime(LocalDateTime.now());Map<String,Object> map = ThreadLocalUtil.get();Integer userId = (Integer) map.get("id");category.setCreateUser(userId);categoryMapper.add(category);}@Overridepublic List<Category> list() {Map<String,Object> map = ThreadLocalUtil.get();Integer userId = (Integer) map.get("id");return categoryMapper.list(userId);}@Overridepublic Category findById(Integer id) {Category c = categoryMapper.findById(id);return c;}@Overridepublic void update(Category category) {category.setUpdateTime(LocalDateTime.now());categoryMapper.update(category);}}
1.1.4 Mapper
package com.geji.mapper;import com.geji.pojo.Category;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;import java.util.List;@Mapper
public interface CategoryMapper {//新增@Insert("insert into category(category_name,category_alias,create_user,create_time,update_time) " +"values(#{categoryName},#{categoryAlias},#{createUser},#{createTime},#{updateTime})")void add(Category category);//查询所有@Select("select * from category where create_user = #{userId}")List<Category> list(Integer userId);//根据id查询@Select("select * from category where id = #{id}")Category findById(Integer id);//更新@Update("update category set category_name=#{categoryName},category_alias=#{categoryAlias},update_time=#{updateTime} where id=#{id}")void update(Category category);}
1.1.5 postman测试

相关文章:
Spring Boot 笔记 015 创建接口_更新文章分类
1.1.1 实体类id增加NotNull注释,并做分组校验 1.1.1.1 定义分组 1.1.1.2 实体类中指定校验项属于哪个分组 如果说某个校验项没有指定分组,默认属于Default分组 分组之间可以继承, A extends B 那么A中拥有B中所有的校验项package com.geji.pojo;import com.faste…...
【Java基础题型】判断是否是回文数
需求:如果给你一个正数x。 如果x是一个回文整数,打印true,否则,返回false 解释: 回文数是指正序(从左到右)和从倒序(从右到左)都是一样的整数数字。 eg.121是回文数,123不是,2112是回文数&…...
Linux paste命令教程:并行合并文件的利器(附案例详解和注意事项)
Linux paste命令介绍 paste 是一个在 Unix 或 Linux 操作系统中非常有用的命令。它用于通过在标准输出中输出由每个指定文件的行组成的行,以制表符为分隔符,来水平(并行)合并文件。 Linux paste命令适用的Linux版本 paste 命令…...
用163邮箱或者outlook接收国科大邮箱的邮件
使用如图下路径,创建一个新的密码,用于在163大师邮箱或者outlook登录即可 如果不行,则需要手动配置邮箱服务器 参考网址:中国科学院邮件系统帮助中心...
VitePress-15- 配置- description 的作用详解
作用描述 1、descriptioin 是站点的描述, 会被解析为 html 页面的 <meta name"description" content "xxx"> 标签 。2、description 本身就是 <meta> 标签的一种,不会在页面上展示出来, 仅仅是作为页面的一…...
寒假学习记录17:包管理器(包管理工具)
概念 包(package) 包含元数据的库,这些元数据包括:名称,描述,git主页,许可证协议,作者,依赖..... 库(library,简称lib) 以一个或多个模…...
【AIGC】Stable Diffusion的常见错误
Stable Diffusion 在使用过程中可能会遇到各种各样的错误。以下是一些常见的错误以及可能的解决方案: 模型加载错误:可能出现模型文件损坏或缺失的情况。解决方案包括重新下载模型文件,确保文件完整并放置在正确的位置。 依赖项错误&#x…...
线段树解决-----P1161 开灯 P1047 [NOIP2005 普及组] 校门外的树 python解法
# [NOIP2005 普及组] 校门外的树 ## 题目描述 某校大门外长度为 l 的马路上有一排树,每两棵相邻的树之间的间隔都是 1 米。我们可以把马路看成一个数轴,马路的一端在数轴 0 的位置,另一端在 l的位置;数轴上的每个整数点…...
学习总结16
# 【模板】最小生成树 ## 题目描述 如题,给出一个无向图,求出最小生成树,如果该图不连通,则输出 orz。 ## 输入格式 第一行包含两个整数 N,M,表示该图共有 N 个结点和 M 条无向边。 接下来 M 行每行包含三个整数 …...
问题:从完整的问题解决过程来看,( )是首要环节。A.理解问题 B.提出假设C.发现问题 D.检验假设 #学习方法#学习方法
问题:从完整的问题解决过程来看,( )是首要环节。A.理解问题 B.提出假设C.发现问题 D.检验假设 A.理解问题 B.提出假设 C.发现问题 参考答案如图所示...
服务器感染了.mallox勒索病毒,如何确保数据文件完整恢复?
导言: 在当今数字化的世界中,恶意软件已成为企业和个人数据安全的一大威胁,其中.mallox勒索病毒是最为恶劣的之一。本文91数据恢复将介绍.mallox勒索病毒的特点,以及如何恢复被其加密的数据文件以及预防措施。 如果您正在经历勒索…...
Android java基础_多态性
一.Android Java基础_多态性 向上转换:只能定义被子类覆写的方法,不能调用在子类中定义的方法。 class Father {private int money; public int getMoney() {return money; }public void setMoney(int money) {this.money money; }public void printInfo() {Syst…...
面试前的准备
目录: 面试前的准备Java程序员校招与社招的区别校招与社招的区别:Java程序员投递简的正确方式投递简历时的误区简历投递时间Java程序员如何应对面试邀约Java程序员如何对公司做背调面试前的技术准备 面试前的准备 Java程序员校招与社招的区别 校招和社招…...
前端架构: 本地调试脚手架的2种方式
一、 调试简单的脚手架方式 假定脚手架名称是 xxx 1 )方式1 在xxx脚手架项目目录的上一级,执行 npm i -g xxx这时候,就可以本地调试脚手架,在前文中已经说明软链的作用参考:https://blog.csdn.net/Tyro_java/article…...
现阶段适用于 单一架构 还是 分布式架构 ?
单体架构: 优势:简单直接,易于理解和开发,适用于小型应用或刚刚开始的项目。劣势:扩展性受限,只能通过增加服务器的数量来提高处理能力;所有模块都部署在一个单独的服务器或容器中,…...
掌握Go并发:Go语言并发编程深度解析
🏷️个人主页:鼠鼠我捏,要死了捏的主页 🏷️系列专栏:Golang全栈-专栏 🏷️个人学习笔记,若有缺误,欢迎评论区指正 前些天发现了一个巨牛的人工智能学习网站,通俗易懂&…...
创建一个多进程服务器和多线程服务器
多进程服务器 #include<myhead.h> #define PORT 8888 //端口号 #define IP "192.168.10.10" //IP地址//定义信号处理函数,用于回收僵尸进程 void handler(int signo) {if(signo SIGCHLD){while(waitpid(-1, NULL, WNOHAN…...
相机图像质量研究(18)常见问题总结:CMOS期间对成像的影响--CFA
系列文章目录 相机图像质量研究(1)Camera成像流程介绍 相机图像质量研究(2)ISP专用平台调优介绍 相机图像质量研究(3)图像质量测试介绍 相机图像质量研究(4)常见问题总结:光学结构对成像的影响--焦距 相机图像质量研究(5)常见问题总结:光学结构对成…...
18.谈谈你对JSON的理解
JSON 是一种基于文本的轻量级的数据交换格式。它可以被任何的编程语言读取和作为数据格式来传递。 在项目开发中,使用 JSON 作为前后端数据交换的方式。在前端通过将一个符合 JSON 格式的数据结构序列化为 JSON 字符串,然后将它传递到后端,后…...
绝地求生:“觉醒之旅”通行证曝光,西游主题通行证及成长型武器即将上线
随着27赛季即将结束,有关28.1版本的皮肤及通行证内容也被爆料出来,本次通行证为工坊通行证,和去年四圣兽通行证为同一类型,将于2月7日更新至正式服 除了通行证获取工坊币还是可以开箱获取并兑换一些奖励 先看通行证 四个套装应该分…...
微信小程序之bind和catch
这两个呢,都是绑定事件用的,具体使用有些小区别。 官方文档: 事件冒泡处理不同 bind:绑定的事件会向上冒泡,即触发当前组件的事件后,还会继续触发父组件的相同事件。例如,有一个子视图绑定了b…...
51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
【机器视觉】单目测距——运动结构恢复
ps:图是随便找的,为了凑个封面 前言 在前面对光流法进行进一步改进,希望将2D光流推广至3D场景流时,发现2D转3D过程中存在尺度歧义问题,需要补全摄像头拍摄图像中缺失的深度信息,否则解空间不收敛…...
《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
Cinnamon修改面板小工具图标
Cinnamon开始菜单-CSDN博客 设置模块都是做好的,比GNOME简单得多! 在 applet.js 里增加 const Settings imports.ui.settings;this.settings new Settings.AppletSettings(this, HTYMenusonichy, instance_id); this.settings.bind(menu-icon, menu…...
08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险
C#入门系列【类的基本概念】:开启编程世界的奇妙冒险 嘿,各位编程小白探险家!欢迎来到 C# 的奇幻大陆!今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类!别害怕,跟着我,保准让你轻松搞…...
在golang中如何将已安装的依赖降级处理,比如:将 go-ansible/v2@v2.2.0 更换为 go-ansible/@v1.1.7
在 Go 项目中降级 go-ansible 从 v2.2.0 到 v1.1.7 具体步骤: 第一步: 修改 go.mod 文件 // 原 v2 版本声明 require github.com/apenella/go-ansible/v2 v2.2.0 替换为: // 改为 v…...
webpack面试题
面试题:webpack介绍和简单使用 一、webpack(模块化打包工具)1. webpack是把项目当作一个整体,通过给定的一个主文件,webpack将从这个主文件开始找到你项目当中的所有依赖文件,使用loaders来处理它们&#x…...
DAY 45 超大力王爱学Python
来自超大力王的友情提示:在用tensordoard的时候一定一定要用绝对位置,例如:tensorboard --logdir"D:\代码\archive (1)\runs\cifar10_mlp_experiment_2" 不然读取不了数据 知识点回顾: tensorboard的发展历史和原理tens…...
深入理解 React 样式方案
React 的样式方案较多,在应用开发初期,开发者需要根据项目业务具体情况选择对应样式方案。React 样式方案主要有: 1. 内联样式 2. module css 3. css in js 4. tailwind css 这些方案中,均有各自的优势和缺点。 1. 方案优劣势 1. 内联样式: 简单直观,适合动态样式和…...
