SpringBoot速成(11)更新用户头像,密码P13-P14

更新头像:

1.代码展示:

1.@RequestParam 是 Spring MVC 中非常实用的注解,用于从 HTTP 请求中提取参数并绑定到控制器方法的参数上。

2.@PatchMapping 是 Spring MVC 中的一个注解,用于处理 HTTP 的 PATCH 请求。PATCH 请求通常用于对资源的部分更新,而不是像 PUT 请求那样对资源进行完全替换。

在你的例子中,@PatchMapping("updateAvatar") 表示这个方法会处理路径为 /updateAvatarPATCH 请求。

UserServiceImpl:

  @Overridepublic void updateAvatar(String avatarUrl) {Map<String,Object> map= ThreadLocalUtil.get();Integer id= (Integer) map.get("id");userMapper.updateAvater(avatarUrl,id);}

 UserMapper:

 @Update("update user set userPic=#{userPic},updateTime=now() where id=#{id}")void updateAvater(String avatarUrl, Integer id);

报错 :

//更新头像 
@Update("update user set userPic=#{userPic},updateTime=#{updateTime} where id=#{id}")void updateAvater(String avatarUrl, Integer id);@Overridepublic void updateAvatar(String avatarUrl) {Map<String,Object> map= ThreadLocalUtil.get();Integer id= (Integer) map.get("id");userMapper.updateAvater(avatarUrl,id);}

@里边写的是 updateAvater()参数中能得到的东西

修改:updateTime=now()

正确举例:

//更新信息@Update("update user set nickname=#{nickname},email=#{email},updateTime=#{updateTime} where id=#{id}")void update(User user);@Overridepublic void update(User user) {user.setUpdateTime(LocalDateTime.now());userMapper.update(user);}

Map<String,Object> map=JwtUtil.parseToken(token);与
Map<String,Object> map=ThreadLocalUtil.get();的区别:

前者需要在Controller类中方法的参数上写上

@RequestHeader(name="Authorization") String token

2.参数校验: 

检验是否是一个合法的URL:

@URL:

局限性:只能判断有无@,则若写123@qq,也会通过

 Controller:

 @PatchMapping("updateAvatar")public  Result updateAvatar(@RequestParam @URL String avatarUrl) {userService.updateAvatar(avatarUrl);return Result.success();}


更新密码:

1.@RequestBody 是Spring MVC中用于绑定HTTP请求体的注解。它将请求体中的JSON、XML等格式的数据自动转换为Java对象或集合。

//更新用户信息
@PutMapping("/update")
public  Result update(@RequestBody User user){userService.update(user);return  Result.success();}

2.@RequestParam 是 Spring MVC 中的一个注解,用于将请求参数(通常是 URL 中的查询参数或表单数据)绑定到方法的参数上。

3.代码局限性:新密码没有判断是否符合要求;新旧密码不能一致;更新密码后应自动跳转登陆页面,重新登陆(前端)

代码展示:

userController:

 //更新用户密码@PatchMapping("/updatePwd")public Result updatePwd(@RequestBody Map<String,String> params){String oldpwd = params.get("old_pwd");String newpwd = params.get("new_pwd");String repwd = params.get("re_pwd");//没输全if(StringUtils.hasLength(oldpwd)||StringUtils.hasLength(newpwd)||StringUtils.hasLength(repwd)){return Result.error("缺少必要参数");}else{Map<String,Object> map=ThreadLocalUtil.get();String username= (String) map.get("username");User loginUser=userService.findByUserName(username);//输全//判断输入是否合法if(loginUser.getPassword().equals(MailUtil1.getMD5String(oldpwd))){//判读oldpwd和加密过的密码(即根据username得到的密码)是否相同return Result.error("原密码输入不正确");}if(!repwd.equals(newpwd)){return Result.error("新密码不一致");}}//完全合法,将新密码输入表中userService.updatePwd(newpwd);return  Result.success();}


userServiceImpl:

  @Overridepublic void updatePwd(String newpwd) {Map<String,Object> map=ThreadLocalUtil.get();Integer id= (Integer) map.get("id");userMapper.updatePwd(MailUtil1.getMD5String(newpwd),id);//表中的是加密过的密码}

userMapper:

 @Update("update user set password=#{pmd5String},updateTime=now() where id=#{id}")void updatePwd(String md5String, Integer id);

报错:?????????????????????????

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/19449.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

DeepSeek R1 与 OpenAI O1:机器学习模型的巅峰对决

我的个人主页 我的专栏&#xff1a;人工智能领域、java-数据结构、Javase、C语言&#xff0c;希望能帮助到大家&#xff01;&#xff01;&#xff01;点赞&#x1f44d;收藏❤ 一、引言 在机器学习的广袤天地中&#xff0c;大型语言模型&#xff08;LLM&#xff09;无疑是最…

Datawhale 数学建模导论二 笔记1

第6章 数据处理与拟合模型 本章主要涉及到的知识点有&#xff1a; 数据与大数据Python数据预处理常见的统计分析模型随机过程与随机模拟数据可视化 本章内容涉及到基础的概率论与数理统计理论&#xff0c;如果对这部分内容不熟悉&#xff0c;可以参考相关概率论与数理统计的…

【个人开发】deepspeed+Llama-factory 本地数据多卡Lora微调

文章目录 1.背景2.微调方式2.1 关键环境版本信息2.2 步骤2.2.1 下载llama-factory2.2.2 准备数据集2.2.3 微调模式2.2.3.1 zero-3微调2.2.3.2 zero-2微调2.2.3.3 单卡Lora微调 2.3 踩坑经验2.3.1 问题一&#xff1a;ValueError: Undefined dataset xxxx in dataset_info.json.2…

STM32 如何使用DMA和获取ADC

目录 背景 ‌摇杆的原理 程序 端口配置 ADC 配置 DMA配置 背景 DMA是一种计算机技术&#xff0c;允许某些硬件子系统直接访问系统内存&#xff0c;而不需要中央处理器&#xff08;CPU&#xff09;的介入&#xff0c;从而减轻CPU的负担。我们可以通过DMA来从外设&#xf…

Jvascript网页设计案例:通过js实现一款密码强度检测,适用于等保测评整改

本文目录 前言功能预览样式特点总结&#xff1a;1. 整体视觉风格2. 密码输入框设计3. 强度指示条4. 结果文本与原因说明 功能特点总结&#xff1a;1. 密码强度检测2. 实时反馈机制3. 详细原因说明4. 视觉提示5. 交互体验优化 密码强度检测逻辑Html代码Javascript代码 前言 能满…

Mybatis高级(动态SQL)

目录 一、动态SQL 1.1 数据准备&#xff1a; 1.2 <if>标签 1.3<trim> 标签 1.4<where>标签 1.5<set>标签 1.6 <foreach>标签 1.7<include> 标签 一、动态SQL 动态SQL是Mybatis的强⼤特性之⼀&#xff0c;能够完成不同条件下不同…

mac 意外退出移动硬盘后再次插入移动硬盘不显示怎么办

第一步&#xff1a;sudo ps aux | grep fsck 打开mac控制台输入如下指令&#xff0c;我们看到会出现两个进程&#xff0c;看进程是root的这个 sudo ps aux|grep fsck 第二步&#xff1a;杀死进程 在第一步基础上我们知道不显示u盘的进程是&#xff1a;62319&#xff0c;我们…

(2025)深度分析DeepSeek-R1开源的6种蒸馏模型之间的逻辑处理和编写代码能力区别以及配置要求,并与ChatGPT进行对比(附本地部署教程)

(2025)通过Ollama光速部署本地DeepSeek-R1模型(支持Windows10/11)_deepseek猫娘咒语-CSDN博客文章浏览阅读1k次&#xff0c;点赞19次&#xff0c;收藏9次。通过Ollama光速部署本地DeepSeek-R1(支持Windows10/11)_deepseek猫娘咒语https://blog.csdn.net/m0_70478643/article/de…

qt + opengl 给立方体增加阴影

在前几篇文章里面学会了通过opengl实现一个立方体&#xff0c;那么这篇我们来学习光照。 风氏光照模型的主要结构由3个分量组成&#xff1a;环境(Ambient)、漫反射(Diffuse)和镜面(Specular)光照。下面这张图展示了这些光照分量看起来的样子&#xff1a; 1 环境光照(Ambient …

机器学习-监督学习

1. 定义与原理 监督学习依赖于标记数据&#xff08;即每个输入样本都对应已知的输出标签&#xff09;&#xff0c;模型通过分析这些数据中的规律&#xff0c;建立从输入特征到目标标签的映射函数。例如&#xff0c;在垃圾邮件检测中&#xff0c;输入是邮件内容&#xff0c;输出…

使用grafana v11 建立k线(蜡烛图)仪表板

先看实现的结果 沪铜主力合约 2025-02-12 的1分钟k线图 功能介绍: 左上角支持切换主力合约,日期,实现动态加载数据. 项目背景: 我想通过前端展示期货指定品种某1天的1分钟k线,类似tqsdk 的web_gui 生成图形化界面— TianQin Python SDK 3.7.8 文档 项目架构: 后端: fastap…

我们来学HTTP/TCP -- 另辟蹊径从响应入手

从响应入手 题记响应结语 题记 很多“废话”&#xff0c;在很多文章中出奇的一致那种感觉是&#xff0c;说了好像又没说一样&#xff0c;可以称之为“电子技术垃圾”当然&#xff0c;是从个人主观的感受&#xff0c;这该死的回旋镖估计也会打在自己头上但咱也学学哪吒精神“我…

Golang官方编程指南

文章目录 1. Golang 官方编程指南2. Golang 标准库API文档 1. Golang 官方编程指南 Golang 官方网站&#xff1a;https://go.dev/ 点击下一步&#xff0c;查看官方手册怎么用 https://tour.go-zh.org/welcome/1 手册中的内容比较简单 go语言是以包的形式化管理函数的 搜索包名…

开源语音克隆项目 OpenVoice V2 本地部署

#本机环境 WIN11 I5 GPU 4060ti 16G 内存 32G #开始 git clone https://github.com/myshell-ai/OpenVoice.git conda create -n opvenv python3.9 -y conda activate opvenv pip3 install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/…

Java8适配的markdown转换html工具(FlexMark)

坐标地址&#xff1a; <dependency><groupId>com.vladsch.flexmark</groupId><artifactId>flexmark-all</artifactId><version>0.60.0</version> </dependency> 工具类代码&#xff1a; import com.vladsch.flexmark.ext.tab…

Linux-文件IO

1.open函数 【1】基本概念和使用 #include <fcntl.h> int open(const char *pathname&#xff0c;int flags); int open(const char *pathname&#xff0c;int flags&#xff0c;mode_t mode); 功能: 打开或创建文件 参数: pathname //打开的文件名 f…

flutter 专题四十八 Google发布Flutter 2.0正式版,支持全平台程序构建

今天&#xff0c;Google发布了 Flutter 2.0的正式版本&#xff0c;至2018年Flutter 1.0版本发布以来&#xff0c;在最近的3年的时间礼&#xff0c;Flutter进行了大量的升级以支持更多平台的开发需求。作为 Flutter 的重大升级&#xff0c;Flutter 2.0 增加了对桌面和 Web 应用程…

PowerBI 矩阵 列标题分组显示(两行列标题)

先看效果 数据表如下&#xff1a; 我们在powerbi里新建一个矩阵&#xff0c;然后如图加入字段&#xff1a; 我们就会得到这样的矩阵&#xff1a; 我们在“可视化”->“列”&#xff0c;上双击&#xff0c;输入空格&#xff0c;就能消除左上角的"类别"两字 同理修…

Springboot 中如何使用Sentinel

在 Spring Boot 中使用 Sentinel 非常方便&#xff0c;Spring Cloud Alibaba 提供了 spring-cloud-starter-alibaba-sentinel 组件&#xff0c;可以快速将 Sentinel 集成到你的 Spring Boot 应用中&#xff0c;并利用其强大的流量控制和容错能力。 下面是一个详细的步骤指南 …

LLaMA-Factory DeepSeek-R1 模型 微调基础教程

LLaMA-Factory 模型 微调基础教程 LLaMA-FactoryLLaMA-Factory 下载 AnacondaAnaconda 环境创建软硬件依赖 详情LLaMA-Factory 依赖安装CUDA 安装量化 BitsAndBytes 安装可视化微调启动 数据集准备所需工具下载使用教程所需数据合并数据集预处理 DeepSeek-R1 可视化微调数据集处…