学成在线----day3

news2024/11/26 4:28:07

1、JSR303校验

对填入的数据自动做一些约束

package com.xuecheng.content.model.dto;

import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;

import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.Size;
import java.math.BigDecimal;


(value="AddCourseDto", description="新增课程基本信息")
public class AddCourseDto {

 (message = "课程名称不能为空")
 (value = "课程名称", required = true)
 private String name;

 (message = "适用人群不能为空")
 (message = "适用人群内容过少",min = 10)
 (value = "适用人群", required = true)
 private String users;

 (value = "课程标签")
 private String tags;

 (message = "课程分类不能为空")
 (value = "大分类", required = true)
 private String mt;

 (message = "课程分类不能为空")
 (value = "小分类", required = true)
 private String st;

 (message = "课程等级不能为空")
 (value = "课程等级", required = true)
 private String grade;

 (value = "教学模式(普通,录播,直播等)", required = true)
 private String teachmode;

 (value = "课程介绍")
 private String description;

 (value = "课程图片", required = true)
 private String pic;

 (message = "收费规则不能为空")
 (value = "收费规则,对应数据字典", required = true)
 private String charge;

 (value = "价格")
 private Float price;
 (value = "原价")
 private Float originalPrice;


 (value = "qq")
 private String qq;

 (value = "微信")
 private String wechat;
 (value = "电话")
 private String phone;

 (value = "有效期")
 private Integer validDays;
}

    ("新增课程")
    ("/course")
    public CourseBaseInfoDto createCourseBase(  AddCourseDto addCourseDto){
        //获取到用户所属机构的id
        Long companyId = 1232141425L;
//        int i = 1/0;
        CourseBaseInfoDto courseBase = courseBaseInfoService.createCourseBase(companyId, addCourseDto);
        return courseBase;
    }

getBindingResult

getBindingResult是Spring MVC中的一个方法,用于获取表单数据绑定的结果对象。

在Spring MVC中,当处理表单提交时,会将表单数据绑定到一个Java对象中,这个过程称为数据绑定。当数据绑定出现错误时,Spring MVC会将错误信息存储在一个BindingResult对象中,我们可以使用getBindingResult方法来获取这个对象,从而获取表单数据绑定的结果。

BindingResult对象包含了以下信息:

  • 绑定的表单数据字段名
  • 绑定的表单数据类型
  • 绑定的表单数据值
  • 错误信息,如验证失败的错误信息

我们可以使用BindingResult对象来检查表单数据绑定是否成功,以及是否存在错误。如果存在错误,我们可以进一步处理这些错误信息,例如显示在页面上或者进行其他的操作。

下面是一个简单的示例:

@PostMapping("/submit-form")
public String submitForm(@Valid MyForm form, BindingResult bindingResult) {
    if (bindingResult.hasErrors()) {
        // 处理错误信息
    }
    // 处理表单提交
}

在上面的代码中,我们使用@Valid注解来标注MyForm对象,表示需要对其进行数据验证。如果数据验证失败,Spring MVC会将错误信息存储在bindingResult对象中,我们可以通过调用bindingResult.hasErrors()方法来检查是否存在错误信息。如果存在错误信息,我们可以进一步处理这些信息。

MethodArgumentNotValidException

   //MethodArgumentNotValidException
    
    (MethodArgumentNotValidException.class)
    (HttpStatus.INTERNAL_SERVER_ERROR)
    public RestErrorResponse methodArgumentNotValidException(MethodArgumentNotValidException e){

        BindingResult bindingResult = e.getBindingResult();
        //存储错误信息
        List<String> errors = new ArrayList<>();
        bindingResult.getFieldErrors().stream().forEach(item->{
            errors.add(item.getDefaultMessage());
        });

        //将list中的错误信息拼接起来
        String errMessage = StringUtils.join(errors, ",");
        //记录异常
        log.error("系统异常{}",e.getMessage(),errMessage);

        //解析出异常信息
        RestErrorResponse restErrorResponse = new RestErrorResponse(errMessage);
        return restErrorResponse;
    }

JSR303分组校验

由于增加和修改都可能用到同一个DTO,这时候就需要分组校验
在这里插入图片描述

package com.xuecheng.base.exception;

/**
 * @author Mr.M
 * @version 1.0
 * @description 用于分级校验,定义一些常用的组
 * @date 2023/2/14 9:37
 */
public class ValidationGroups {
 public interface Inster{};
 public interface Update{};
 public interface Delete{};
}

2、参数合法性校验

在这里插入图片描述

3、修改课程接口

    @Override
    public CourseBaseInfoDto updateCourseBase(Long companyId, EditCourseDto editCourseDto) {

        //拿到课程id
        Long courseId = editCourseDto.getId();
        //查询课程信息
        CourseBase courseBase = courseBaseMapper.selectById(courseId);
        if(courseBase == null){
            XueChengPlusException.cast("课程不存在");
        }

        //数据合法性校验
        //根据具体的业务逻辑去校验
        //本机构只能修改本机构的课程
        if(!companyId.equals(courseBase.getCompanyId())){
            XueChengPlusException.cast("本机构只能修改本机构的课程");
        }

        //封装数据
        BeanUtils.copyProperties(editCourseDto,courseBase);
        //修改时间
        courseBase.setChangeDate(LocalDateTime.now());

        //更新数据库
        int i = courseBaseMapper.updateById(courseBase);
        if(i<=0){
            XueChengPlusException.cast("修改课程失败");
        }
        //更新营销信息
        //todo:更新营销信息
        //查询课程信息
        CourseBaseInfoDto courseBaseInfo = getCourseBaseInfo(courseId);

        return courseBaseInfo;
    }

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

PyCharm安装教程(2023年,3月)

下载PyCharm之前需要准备下载Python 链接&#xff1a;Python安装教程 一、PyCharm下载 1、进入JetBrains官网&#xff1a; 官网地址&#xff1a;https://www.jetbrains.com/ 2、点击【Developer Tools】 开发者工具&#xff0c;选择【PyCharm】点击跳转到PyCharm界面。点击…

【Docker】 7.Docker Internet

文章目录 Docker InternetDocker Internet CommandDocker Bridge Internetdocker Host InternetDocker Container InternetDocker None Internet Docker Internet Docker 网络架构采用的设计规范是CNM&#xff08;Container Network Model&#xff09;。CNM中规定了Docker网络…

RK3588平台开发系列讲解(同步与互斥篇)自旋锁死锁实验

平台内核版本安卓版本RK3588Linux 5.10Android 12文章目录 一、自旋锁死锁二、实验程序的编写2.1、驱动程序编写2.2、编写测试 APP沉淀、分享、成长,让自己和他人都能有所收获!😄 📢自旋锁若是使用不当就会产生死锁,在本篇将会对自旋锁的特殊情况-死锁进行讲解。 一、自…

0801详解-redux-react

文章目录 1 redux1.1 概述1.2 示例实现页面数字的加、减1.3 异步加-异步action 2 react-redux2.1 概述2.2 优化示例代码 3 数据共享4 redux开发者工具5 小结5.1 求和案例_redux精简版5.2 求和案例_redux完整版5.3 求和案例_redux异步action版5.4 求和案例_react-redux基本使用5…

【哈士奇赠书活动 - 25期】-〖Python自动化办公应用大全(ChatGPT版) 〗

文章目录 ⭐️ 赠书 - 《Python自动化办公应用大全&#xff08;ChatGPT版&#xff09;》⭐️ 内容简介⭐️ 作者简介⭐️ 编辑推荐⭐️ 赠书活动 → 获奖名单 ⭐️ 赠书 - 《Python自动化办公应用大全&#xff08;ChatGPT版&#xff09;》 ⭐️ 内容简介 本书全面系统地介绍了P…

使用YOLOv5实现图片、视频的目标检测

推断的准备工作 接下来我将从官方代码开始&#xff0c;一步一步展示如何进行图片、视频识别 首先从GitHub下载官方代码&#xff08;也可以从下面链接获取&#xff09;&#xff1a; 链接&#xff1a;https://pan.baidu.com/s/16wzV899D90TY2Xwhx4TwhA 提取码&#xff1a;vzvj …

MYSQL必知必会,详尽入门,一文帮你学会SQL必知必会

目录 前言 数据库的概念和术语 SQL语言和组成 DDL show : 展示当前已有的数据库或者表 create &#xff1a;创建一个数据库或者一个表 drop &#xff1a;删除表、数据库对象或者视图 alter &#xff1a;修改现有的数据库对象&#xff0c;例如 修改表的属性或者字段 (…

geth下载安装配置环境及联盟链的搭建

以太坊概论考察课 更具课堂教学讲解&#xff0c;参考开放资料。使用所学的知识&#xff0c;创建项目并完成要求的内容。包含的功能和要求具体如下&#xff1a; 一&#xff1a;安装并运行geth客户端 1、下载安装geth 首先下载geth&#xff1a;https://geth.ethereum.org/dow…

javaScript蓝桥杯---视频弹幕

目录 一、介绍二、准备三、⽬标四、代码五、完成 一、介绍 弹幕指直接显现在视频上的评论&#xff0c;可以以滚动、停留甚⾄更多动作特效⽅式出现在视频上&#xff0c;是观看视频的⼈发送的简短评论。通过发送弹幕可以给观众⼀种“实时互动”的错觉&#xff0c;弹幕的出现让观…

Segment Anything Model (SAM)——卷起来了,那个号称分割一切的CV大模型他来了

最近每天打开微信看到10个公众号里面差不多有11个都在各种玩赚chatGPT&#xff0c;每个都在说是各种大好风口&#xff0c;哎&#xff0c;看得眼睛都是累的。 今天下午无意间看到Meta发布了一款号称能分割一切的CV大模型&#xff0c;CV圈也开始卷起来&#xff0c;今年各种大模型…

chatgpt赋能python:Python在图片处理方面的应用

Python在图片处理方面的应用 在当今数字化的时代&#xff0c;图像处理已成为不可避免的技术。越来越多的业务需要对图片进行处理、识别和分析。Python是一种易于使用且适合处理图像的编程语言。Python中有许多图像处理库&#xff0c;例如Pillow、Scikit-Image和OpenCV等&#…

基于BP神经网络的PID智能控制

基于BP神经网络的PID智能控制 基于BP神经网络的PID整定原理经典的增量式数字PID控制算法为&#xff1a;BP神经网络结构&#xff1a;学习算法仿真模型Matlab代码仿真效果图结论python仿真参考文献 基于BP神经网络的PID整定原理 PID控制要获得较好的控制效果&#xff0c;就必须通…

山东大学单片机原理与应用实验 3.4 矩阵键盘扫描实验

目录 一、实验题目 二、实验要求 三、实验过程及结果记录 1. 在Proteus 环境下建立图1所示原理图&#xff0c;并将其保存为keyscan_self.DSN 文件。 2. 编写控制源程序&#xff0c;将其保存为keyscan_self.asm 或keyscan_self.c。 3. 将源程序添加到U1 中&#xff0c;并构…

chatgpt赋能python:Python如何将空格变成换行

Python如何将空格变成换行 Python是一种流行的编程语言&#xff0c;有着许多实用的功能和库。在这篇文章中&#xff0c;我们将介绍如何使用Python将空格变成换行的方法。这是一种有用的技巧&#xff0c;可以帮助你在处理文本时更加方便。 为什么需要将空格变成换行 将空格变…

eNSP数据抓包时弹不出Wireshark.exe

文章目录 原因&#xff1a;wireshark的版本问题解决方法&#xff1a;操作例图 原因&#xff1a;wireshark的版本问题 上述2.6.6版本安装后&#xff0c;ensp工具路径正确&#xff0c;数据抓包也始终打不开wireshark&#xff0c;但是直接打开是可以打开的。安装3.6.3版本后&#…

零基础使用ChatGPT写一个小游戏---文末附源码

ChatGPT&#xff1a;赋能自然语言处理的多种应用领域 ChatGPT是当今最先进的人工智能对话系统之一&#xff0c;已经被证明可以支持许多不同的自然语言处理应用程序。以下是ChatGPT可以运行的几个领域&#xff1a; 聊天机器人 ChatGPT作为一个建立在自然语言处理技术上的人工…

chatgpt赋能python:Python数据拟合

Python 数据拟合 在数据分析和机器学习领域&#xff0c;数据拟合是非常重要的一步。Python作为一种流行的编程语言&#xff0c;在数据拟合方面拥有强大的工具和库&#xff0c;因此被广泛使用。本文将介绍Python中常用的一些数据拟合方法&#xff0c;并演示如何使用它们。 线性…

200道网络安全常见面试题合集(附答案解析+配套资料)

有不少小伙伴面临跳槽或者找工作&#xff0c;本文总结了常见的安全岗位面试题&#xff0c;方便各位复习。祝各位事业顺利&#xff0c;财运亨通。在网络安全的道路上越走越远&#xff01; 所有的资料都整理成了PDF&#xff0c;面试题和答案将会持续更新&#xff0c;因为无论如何…

宝塔-如何部署自己的nodejs项目并跑起来【已解决】

我自己做了一个项目&#xff0c;前端后端都是自己做&#xff0c;后端就用的nodejs写的接口&#xff0c;但是本地每次访问都要启动一次&#xff0c;所以我准备放到服务器上&#xff0c;这样接口就能一直跑了 先看效果 这里可以看到我现在是本地的ip在访问接口&#xff0c;以为我…

什么是端到端解决方案

通过“端到端”流程打通&#xff0c;将各相关部门的业务环节衔接起来&#xff0c;消灭“断头路”&#xff0c;不断提高内部的效率并满足客户的需求&#xff0c;最终实现企业效益最大化。 不同语境下的端到端 端到端在不同领域有多重含义&#xff0c;是一个非常复杂且抽象的名…