开发总结-Controller层

news2024/12/24 10:00:19

Controller层一定要try catch一下,不然里面报的错可能导致程序报错。

catch中就表示有错误就 Return ResultUtils.err(e.getMessage())

必填项校验

  1. 在实体属性中添加注解
    @NotNull : 用在基本类 型上 不能为null 但可以为空字符串
    @NotEmpty : 用在集合类上 不能为空 并且长度必须大于0
    @NotBlank : 只能作用在String上,不能为null,而且调用trim()后,长度必须大于0
    @Length:表示长度
    @Pattern:表示正则表达式
    @Email:表示邮箱格式
    @Min:最小值
    @Max:最大值 更多注解看后面
@NotBlank(message = "项目不能为空")
@Length(max = 12, message = "用户真实姓名不能超过12位")
@Pattern(regexp = "^(((13[0-9]{1})|(15[0-9]{1})|(18[0-9]{1}))+\\d{8})$", message = "手机号格式不正确")
@Email
@Min(value = 0, message = "最小值为0")
@Max(value = 2, message = "最大值为2")
@ApiModelProperty(value = "项目id")
@TableField("PROJECT_ID")
private String projectId;
  1. Controller中请求实体添加@Valid注解和BindingResult
import org.springframework.validation.BindingResult;
import javax.validation.Valid;

在这里插入图片描述

private Map<String,String> getErrors(BindingResult result){
    Map<String,String> map = new HashMap<>();
    List<FieldError> errorList = result.getFieldErrors();
    errorList.forEach((e) -> {
// e.getField() 实体类属性名称;e.getDefaultMessage() 为空时的message
        map.put(e.getField(),e.getDefaultMessage());
    });
    return map;
}

在这里插入图片描述

@RequestParam注解

controller层传多个参数的时候使用或者传一个List类型的参数也需要加该注解,因为List是个接口,没有构造方法,如果不用@RequestParam注解就会报错:No primary or default constructor

建议:controller层的参数,都用该注解标注

参数是list

方法1:将list封装到一个对象中,用对象接收
在这里插入图片描述

在这里插入图片描述

传参如下:

{
    "appointDealers":[
        {
            "code":"1008",
            "fullName":"服务站008",
            "shortName":"01",
            "state":"州1",
            "city":"市1",
            "region":"区1",
            "address":"地址1",
            "status":"1"
        },
        {
            "code":"1009",
            "fullName":"服务站009",
            "shortName":"02",
            "state":"州2",
            "city":"市2",
            "region":"区2",
            "address":"地址2",
            "status":"1"
        }
    ]
}

方法2:用String接收

@PostMapping("/addCapacityScoreByProjId.do")
@ResponseBody
public CommonResult addCapacityScoreByProjId(
	@RequestParam("projectId") String projectId, @RequestParam("jsonList") String jsonList){
//前端传过来的都是jsonStr,需要转为对象List(com.alibaba.fastjson)
    List<CapacityNameScoreVo> list = JSONArray.parseArray(jsonList, CapacityNameScoreVo.class);
    capacityService.addCapacityScoreByProjId(projectId, list);
    return ResultUtil.result();
}

jsonList 传过来是这样的:

[{"capacityName": "管理能力","score": "0.5","scoreType":"2"},{"capacityName": "执行力","score": "0.1","scoreType":"1"},{"capacityName": "思想品德","score": "1","scoreType":"3"}] 

@RequestBody注解

作用:将json字符串转为对象
传过来的参数是这样的,可以直接对应到一个对象的属性的话,可以直接用对象接收,使用@RequestBody注解即可:
例如:参数是这样的
{username: “adm”, pageNo: 1, pageSize: 2}

@ApiOperation(value = "用户列表",tags = "用户")
@PostMapping(value = "/users_list")
public ResultVo usersList(@RequestBody Users params){
    Page<Users> usersPages = usersService.getUsersPages(params);
}

如果传来的参数是这样的:
{params: {username: “adm”, pageNo: 1, pageSize: 2}}
不能直接转为User对象,需要用jsonString来接收,然后将jsonStr转为jsonObj,获取jsonObj中的params对应的userJsonObj,再把userJsonObj转为实体类。

@ApiOperation(value = "用户列表",tags = "用户")
@PostMapping(value = "/users_list")
public ResultVo usersList(@RequestBody String jsonStr){
    JSONObject  jsonObj = JSONObject.parseObject(jsonStr);
    JSONObject userJsonObj = (JSONObject)jsonObj.get("params");
    Users users = JSON.toJavaObject(userJsonObj, Users.class);
}

参数是个对象:可以只传一个属性
在这里插入图片描述

在这里插入图片描述

参数是个Map

public OperResult saveAdminUser(@RequestBody Map<String, Object> map) {
    return tUserService.saveAdmin(map);
}

断点看map结构:
在这里插入图片描述

浏览器中看传参:
在这里插入图片描述

Restful风格传参

@ApiOperation(value = "根据id删除用户",tags = "用户")
@PostMapping("/del/{id}")
public ResultVo delUserById(@PathVariable(name = "id") String id){
    Integer rows = usersService.delUserById(id);
    return new ResultVo(rows,Meta.success());
}

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

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

相关文章

MySQL数据库基础(数据库的基本操作、常用的数据类型、表的相关操作)

前言 今天我们将介绍数据库的基本操作、常用的数据类型、表的相关操作 一、数据库的基本操作 1.1 显示当前的数据库 操作代码 show databases;1.2 创建数据库 基本语法&#xff1a; 1. //创建数据库 create database examble;2. create database if not exists exist exa…

PostgreSQL大版本如何升级?

&#x1f4e2;&#x1f4e2;&#x1f4e2;&#x1f4e3;&#x1f4e3;&#x1f4e3; 哈喽&#xff01;大家好&#xff0c;我是【IT邦德】&#xff0c;江湖人称jeames007&#xff0c;10余年DBA及大数据工作经验 一位上进心十足的【大数据领域博主】&#xff01;&#x1f61c;&am…

Paddle OCR v4 微调训练文字识别SVTRNet模型实践

文字识别步骤参考&#xff1a;https://github.com/PaddlePaddle/PaddleOCR/blob/main/doc/doc_ch/recognition.md 微调步骤参考:https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7.1/doc/doc_ch/finetune.md 训练必要性 原始模型标点符号和括号容易识别不到 数据…

FIR滤波器——DSP学习笔记三(包含一个滤波器设计的简明案例)

​​​​​​ 背景知识 FIR滤波器的特性与优点 可精确地实现线性相位响应&#xff08;Linear phase response&#xff09;&#xff0c;无相位失真&#xff1b; 总是稳定的&#xff0c;所有极点都位于原点 线性相位FIR滤波器的性质、类型及零点位置 冲击响应满足&#xff1a;奇…

Java中的File类

File类概述和构造方法 File&#xff1a;它是文件和目录路径名的抽象表示 文件和目录是可以通过File封装成对象的 对于File而言&#xff0c;其封装的并不是一个真正存在的文件&#xff0c;仅仅是一个路径名而已&#xff0c;它可以存在&#xff0c;也可以不存在 我们对Fie的操…

通过maven命令行mvn的方式,下载依赖jar包

目录 目标步骤执行mvn命令 目标 有时通过idea-maven-reload all maven projects更新项目依赖时&#xff0c;会报错Could not find artifact xxx.xx:xxx.x:xxx.jar (https://repo1.maven.org/maven2/org/)。 此时可尝试通过mvn命令行进行依赖下载&#xff08;需要配置maven本地…

工业前沿 | 科东软件亮相2024成都工博会

2024年4月24日&#xff0c;成都国际工业博览会盛大开幕&#xff0c;本届大会以**“创链新工业&#xff0c;共碳新未来”**为主题&#xff0c;吸引了全球30个国家和地区的近600家参展企业。盛会汇聚了众多行业精英和新兴力量&#xff0c;共同探讨制造业的低碳化和数字化转型。科…

Docker资源控制管理

目录 一.CPU 资源控制 1.定义 2.cgroups四大功能 &#xff08;1&#xff09;资源限制&#xff1a;可以对任务使用的资源总额进行限制 &#xff08;2&#xff09;优先级分配&#xff1a;通过分配的cpu时间片数量以及磁盘IO带宽大小&#xff0c;实际上相当于控制了任务运行优…

牛客社区帖子分页显示实现

下图是前端分页的组件&#xff1a; 下面是对应的静态html页面&#xff0c;每一个方块&#xff0c;都是一个a标签&#xff0c;可以点击&#xff0c;执行的链接是/community/index&#xff0c;GET请求&#xff0c;拼接的参数是current&#xff0c;也就是pageNum&#xff0c;只需…

云服务器搭建XSS-platform、DVWA靶机和Permeate论坛

目录 前言准备环境安装步骤一、 部署MySQL二、 系统部署三、系统安装主页介绍 前言 我发现目前网上的xss-platform的搭建教程都是基于本地搭建的&#xff0c;这样搭建好的xss平台只能在本地使用&#xff0c;无法测试别的网站。而网络上的大部分xss平台又几乎都是收费的&#x…

网工内推 | 云计算运维,厂商云相关认证优先,股票期权,全勤奖

01 国科科技 招聘岗位&#xff1a;云计算运维 职责描述&#xff1a; 1、负责私有云平台的运维管理工作,包括云平台日常运维、故障处理、扩容、版本升级、优化和维护等。 2、根据业务需求,从技术角度支持及配合各业务系统上云工作。 3、为云上业务系统提供云产品、云服务方面的…

vue3项目手写记录(持续更新中)

安装pnpm 1)npm install -g pnpm 安装到全局, 2)pnpm create vue创建项目,不要在根级别c盘路径下创建项目.生成的这个项目,不要直接在根路径下,根路径内的文件夹下创建. 3)pnpm dev 运行项目 pnpm install 安装包node_modules. 配置eslient和pretteir 在.eslintrc.cjs文…

WS-BAN模型(细粒度图像分类)

WS-BAN模型&#xff08;细粒度图像分类&#xff09; 摘要Abstract1. WS-BAN1.1 文献摘要1.2 背景1.3 创新点1.4 WS-BAN方法1.4.1 弱监督注意学习1.4.2 注意力丢弃 1.5 实验1.5.1 数据集1.5.2 实施细节1.5.3 对比试验结果 2. Transformer代码学习3. 细粒度图像分类代码复现 摘要…

商店数据(八)

目录 57.后台权限表 58.推荐记录表 ​59.系统上传资源表 ​60.角色表 ​61.订单结算表 62.店铺表 63.店铺认证表 64.店铺申请&#xff08;移动端&#xff09;表 57.后台权限表 CREATE TABLE wat_privilgeid (privilegeod int(11) NOT NULL AUTO_INCREMENT COMMENT 自增…

时间序列模型(含python程序实现)

常用按时间顺序排列的一组随机变量来表示一个随机事件的时间序列&#xff0c;简记为 用表示该随机序列的n个有序观察值&#xff0c;称之为序列长度为n的观察值序列。 常用的时间序列模型 时间序列的预处理 拿到一个观察值序列后&#xff0c;首先要对它的纯随机性和平稳性进行…

分享开放原子AtomGit开源协作平台评测报告

AtomGit平台的总体介绍 开放原子开源基金会是致力于推动全球开源事业发展的非营利机构&#xff0c;于 2020 年 6 月在北京成立&#xff0c;由阿里巴巴、百度、华为、浪潮、360、腾讯、招商银行等多家龙头科技企业联合发起。目前有三个主要机构设置&#xff0c;技术监督委员会&…

09_Scala函数和对象

文章目录 函数和对象1.函数也是对象 scala中声明了一个函数 等价于声明一个函数对象2.将函数当作对象来用&#xff0c;也就是访问函数&#xff0c;但是不执行函数结果3.对象拥有数据类型(函数类型)&#xff0c;对象可以进行赋值操作4.函数对象类型的省略写法&#xff0c;也就是…

2024Xtu程设第一次练习题解

程设练习题谢大会专门查重 1.1531奇怪的数字 题目让我们从小到大输出1e6以内所有的答案&#xff0c;其实也没什么好的思路 就是将一个数n的所有位都拆出来&#xff0c;遍历这些位&#xff08;每次取一个x&#xff09;&#xff0c;然后通过作除法&#xff08;y n / x&#xf…

挤压激励注意力 SE | Squeeze-and-Excitation Networks

论文名称&#xff1a;《Squeeze-and-Excitation Networks》 论文地址&#xff1a;https://arxiv.org/pdf/1709.01507.pdf 代码地址&#xff1a; https://github.com/hujie-frank/SENet 卷积神经网络 (CNN) 的核心构建块是卷积运算符&#xff0c;它使网络能够通过在每一层的局…

杰发科技AC7840——CAN通信简介(6)_监听模式

参考&#xff1a;http://t.csdnimg.cn/AFFPC 0. 简介 7840支持4种扩展模式&#xff0c;其中监听模式。 监听模式概念 作用: 这里写的用于诊断&#xff0c;实际上我还没有用到&#xff0c;不太理解为啥可以用作诊断。 我的理解是&#xff0c;在多个总线下&#xff0c;使用监听…