开发总结-Controller层

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() 为空时的messagemap.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.mzph.cn/bicheng/5544.shtml

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

相关文章

oracle pl/sql 如何让sql windows 显示行号

oracle pl/sql 如何让sql windows 显示行号 下载最新版的pl/sql第一步&#xff0c;在preferences中对sql Windows进行设置&#xff0c;如下所示第二步&#xff0c;在preferences中对User interface进行设置&#xff0c;如下所示结果如下当然&#xff0c;还可以通过右键选择是否…

ccpc热身赛题目1:中文系Roliy的困惑

代码 import java.util.ArrayList; import java.util.Scanner;public class Main {public static void main(String[] args) {ArrayList<String> list new ArrayList<>();char [] charArr new char[32];for (int i 0; i < charArr.length; i) {charArr[i] 0…

OPPO Reno10Pro/Reno11/K10手机强解BL刷root权限KSU内核抓包刷机救砖

OPPO Reno10Pro/Reno11/K10手机虽然发布时间并不久&#xff0c;但由于天玑处理器的体质&#xff0c;已经支持强制解锁BL了&#xff0c;该漏洞来自第三方工具适配&#xff0c;支持OPPO天机8100/8200刷机救砖解锁BL不需要等待官方深度测试直接实现。解锁BL后的OPPO Reno10Pro/Ren…

PC-3000 Mobile Pro: 智能手机及平板设备数据提取及取证工具

天津鸿萌科贸发展有限公司从事数据安全业务20余年&#xff0c;在数据恢复、数据取证、数据备份等领域有丰富的案例经验、前沿专业技术及良好的行业口碑。同时&#xff0c;公司面向取证机构及数据恢复公司&#xff0c;提供数据恢复实验室建设方案&#xff0c;包含数据恢复硬件设…

深度学习之基于Tensorflow卷积神经网络公共区域行人人流密度可视化系统

欢迎大家点赞、收藏、关注、评论啦 &#xff0c;由于篇幅有限&#xff0c;只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 一、项目背景 在公共区域&#xff0c;如商场、火车站、地铁站等&#xff0c;人流密度的监控和管理对于确保公共安全…

制作一个RISC-V的操作系统十五-软件定时器

文章目录 定时器分类定时器相关分类软件定时器设计初始化创建删除触发流程图形示意 优化代码 定时器分类 硬件定时器&#xff1a;由硬件频率和触发限制的大小决定&#xff0c;只有一个&#xff0c;精度高 软件定时器&#xff1a;基于硬件定时器实现&#xff0c;精度大于等于硬…

Docker在linux安装步骤超详细

官网 Install Docker Engine on CentOS | Docker Docs yum -y install gcc yum -y install gcc-c 安装工具 sudo yum install -y yum-utils 设置国内的镜像 yum-config-manager \ --add-repo \ https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo yu…

Scala 多版本下载指南

Scala&#xff0c;这一功能丰富的编程语言&#xff0c;结合了面向对象和函数式编程的精华&#xff0c;为开发者提供了强大的工具来构建高效、可扩展的应用程序。随着Scala社区的不断壮大和技术的演进&#xff0c;多个版本的Scala被广泛应用于不同的项目与场景中。本文旨在为您提…

更新-上市公司董事会多样性指标计算参考SMJ2021(代码+数据)1990-2022年

01、数据介绍 董事会多样性&#xff08;Board Diversity&#xff09;是指公司董事会成员在性别、年龄、种族、教育背景、专业技能、国籍等方面的多元化程度。多样性的董事会能够为公司带来更广泛的观点、经验和技能&#xff0c;有助于提高公司的战略决策质量和创新能力。同时&…

ping命令操作记录

1&#xff0c;ping 主机可查看主机是否在线 2&#xff0c;ping -a参数&#xff0c;解析主机的名称 3&#xff0c;ping -r 跟踪打印路由信息 ping命令的作用&#xff1a;确认目标主机是否存活&#xff0c;确定网络是否畅通 ping的原理&#xff1a;ping发送ICMP&#xff08;互联…

深入解析yolov5,为什么算法都是基于yolov5做改进的?(一)

YOLOv5简介 YOLOv5是一种单阶段目标检测算法&#xff0c;它在YOLOv4的基础上引入了多项改进&#xff0c;显著提升了检测的速度和精度。YOLOv5的设计哲学是简洁高效&#xff0c;它有四个版本&#xff1a;YOLOv5s、YOLOv5m、YOLOv5l、YOLOv5x&#xff0c;分别对应不同的模型大小…

中科院突破:TalkingGaussian技术实现3D人脸动态无失真,高效同步嘴唇运动!

DeepVisionary 每日深度学习前沿科技推送&顶会论文分享&#xff0c;与你一起了解前沿深度学习信息&#xff01; 引言&#xff1a;探索高质量3D对话头像的新方法 在数字媒体和虚拟互动领域&#xff0c;高质量的3D对话头像技术正变得日益重要。这种技术能够在虚拟现实、电影…

网页使用之如何返回json/xml

后端返回json数据给前端进行渲染的方式比较熟悉&#xff0c;至于返回html页面&#xff0c;返回xml的方式接触逐渐减少&#xff0c;来在项目中熟悉这一点。 返回文本数据 json姿势的返回实属最简单的方式&#xff0c;在SpringBoot应用中&#xff0c;有两种简单的方式 1.直接在…

Android Studio 调试:快速入门指南

作为一名Android应用开发人员&#xff0c;调试是你不可或缺的技能之一。通过调试&#xff0c;你可以定位和解决各种问题&#xff0c;包括崩溃、性能问题、UI错误等。在本文中&#xff0c;我们将分享一些实用的Android调试技巧&#xff0c;帮助你提高应用开发效率。 Android St…

2024五一杯数学建模B题思路分析 - 未来新城背景下的交通需求规划与可达率问题

文章目录 1 赛题选题分析 2 解题思路详细的思路过程放在文档中 ! ! &#xff01;&#xff01;&#xff01;&#xff01;&#xff01;3 最新思路更新 1 赛题 B题 未来新城背景下的交通需求规划与可达率问题 随着城市化的持续发展&#xff0c;交通规划在新兴城市建设中显得尤为关…

网络安全是智能汽车下一个要卷的方向?

2024年一季度&#xff0c;中国汽车市场延续了2023年的风格&#xff0c;核心就是「卷」。 2023年&#xff0c;我国汽车市场爆发「最强价格战」&#xff0c;燃油车的市场空间不断被挤压&#xff0c;如今只剩下最后一口气。近日乘联会发布4月1-14日最新数据&#xff0c;新能源&am…

安装mmcv

如果conda或者pip不行 conda install mmcv-full1.3.17 直接用mim pip install -U openmim mim install mmcv 同理一些其他的库也可以来安装。 Installation — mmcv 2.2.0 documentation https://mmdetection.readthedocs.io/zh-cn/v2.24.0/get_started.htm

ES集群分布式查询原理

集群分布式查询 elasticsearch的查询分成两个阶段&#xff1a; scatter phase&#xff1a;分散阶段&#xff0c;coordinating node会把请求分发到每一个分片gather phase&#xff1a;聚集阶段&#xff0c;coordinating node汇总data node的搜索结果&#xff0c;并处理为最终结…

解决iview(view ui)中tabs组件中使用图片预览组件ImagePreview,图片不显示问题

同学们可以私信我加入学习群&#xff01; 正文开始 前言一、问题描述二、原因分析三、解决方案总结 前言 最近在写个人项目的web端和浏览器插件&#xff0c;其中一个功能是base64和图片的转换。因为分成四个小功能&#xff0c;所以使用的iview的tabs来展示不同功能&#xff0c…

无缝对接配电自动化:IEC104转OPC UA网关解决方案

随着水电厂自动化发展的要求&#xff0c;具有一定规模的梯级水电站越来越多&#xff0c;为了实现水电站的无人值班(少人值守)&#xff0c;并考虑到节能控制&#xff0c;电厂采用了集中监控。集中监控关注的是整个电网的安全稳定运行及电压、频率和整个电网的电力需求&#xff0…