Restful风格请求响应和数据库封装映射

发布时间:2026/11/3 10:47:09

Restful风格请求响应和数据库封装映射 目录一、Restful风格的请求二、Apifox软件三、定义响应数据统一格式的java实体类四、后端接收路径指定请求方式五、从请求中接收简单参数RequestParam六、请求体中接收参数RequestBody七、请求路径中接收简单参数PathVariable八、公共路径抽取 RequestMapping共有路径九、实体类和数据库字段的封装映射一、Restful风格的请求根据请求方式描述操作更加的规范统一容易维护Restful风格URL请求方式含义http://localhost:8080/user/1GET查询ID为1的用户http://localhost:8080/user/1DELETE删除ID为1的用户http://localhost:8080/userPOST新增用户http://localhost:8080/userPUT修改用户二、Apifox软件Restful风格的请求浏览器地址栏只支持发出 GET 请求。其他请求方式就要借助第三方软件Apifox软件模拟前端向后端发送的不同方式的请求。1、新建HTTP接口2、选择请求方式和请求地址点击发送即可模拟前端发送的请求。三、定义响应数据统一格式的java实体类实体类Result包含成员1、Integer code响应代码1成功0失败2、String msg返回信息3、Object data响应的数据包含静态成员方法1、Result success()操作成功响应无数据2、Result success(Object object)操作成功响应带数据传入数据data属性中。3、Result error(String msg)操作失败响应传入错误信息。四、后端接收路径指定请求方式1、不限定请求方式RequestMappingRequestMapping(/users) ***此注释表示不限定请求方式*** public Result list(){ System.out.println(查询全部用户数据); Listuser userList userService.findAll(); return Result.success(userList); }2、限定请求方式GET方式1RequestMapping(value /usersmethod RequestMethod.GET)方式2GetMapping(/users) --------SpringBoot提供的注解推荐简洁POSTPostMapping(users)DELETEDeleteMapping(/user/1)PUTPutMapping(/user)五、从请求中接收简单参数RequestParam场景删除id为5的用户数据请求方式DELETEurl/users?id5方式一原始繁琐基于HttpServletRequest 获取请求参数DeleteMapping(/users) public Result deleteById(HttpServletRequest request) { String idStr request.getParameter(id); //通过对象中获取键为id的值获取到字符串类型id。 int id Integer.parseInt(idStr); //字符串转化为int类型方便后续操作 后续操作略---- return Result.success(); //删除不需带数据返回。 }方式二推荐)Spring提供的RequestParam()注解DeleteMapping(/users) public Result deleteById(RequestParam(id) Integer userId) { 操作略---- return Result.success(); //删除不需带数据返回。 }注意一旦声明了RequestParam注解该参数在请求时必须传递如果不传递将会报错。解决此问题要修改该注解内参数修改过后不传参数id将会是nullpublic Result deleteById(RequestParam(value id,required false) Integer userId)方式三推荐如果请求参数名与形参变量名相同直接定义方法形参即可接收省略RequestParam注解DeleteMapping(/users) public Result deleteById(Integer id) { 操作略---- return Result.success(); //删除不需带数据返回。 }六、请求体中接收参数RequestBody场景接收JSON格式的请求参数用于新增用户请求方式POSTurl/users前提JSON数据的键名与方法形参对象的属性名相同并需要使用RequestBody注解标识请求体JSON{ name: 张三, age: 19 }实体类Data //lombok提供get set方法 AllArgsConstructor //lombok提供全参构造 NoArgsConstructor //lombok提供无参构造 public class User { private String name; private Integer age; }请求处理类Requestbody使用PostMapping(/users) public Result add(RequestBody User user) { userService.add(user); //service层传入对象进行添加。 return Result.success(); }七、请求路径中接收简单参数PathVariable场景根据前端请求携带的路径参数ID查询回显请求方式GETurl/users/1请求处理类: PathVariable注解获取路径中id的值赋值给形参userIdGetMapping(/users/{id}) public Result getInfo(PathVariable(id) Integer userId) { User user userService.getInfo(userId); return Result.success(user); }如果形参的名字跟请求路径参数的名字一致就可以省略PathVariable注解的值GetMapping(/users/{id}) public Result getInfo(PathVariable Integer id) { User user userService.getInfo(id); return Result.success(user); }多个路径参数GetMapping(/users/{id}/{name}) public Result getInfo(PathVariable Integer id,PathVariable String name) { User user userService.getInfo(id); return Result.success(user); }八、公共路径抽取 RequestMapping共有路径场景多个接收类都包含同样的路径/users就可以抽取公共路径1、GetMapping/users获取全部成员信息。走URL2、GetMapping/users/{id}获取指定id的成员信息。走URL3、DeleteMapping/users删除成员信息。走URL4、PostMapping/users新增成员信息。走请求体5、PutMapping/users修改成员信息。走请求体请求处理类上添加RequestMapping注解RequestMapping(/users) //抽取公共路径/users RestController public class UserController{ GetMapping //省略路径 public Result findAll() { 获取成员列表 } PutMapping //省略路径 public Result updateById(RequestBody User user) { 修改成员信息 } GetMapping(/{id}) //省略公共路径包含独有路径 public Result GetInfo(PathVariable Integer id) { 根据路径参数查询回显成员信息 } }九、实体类和数据库字段的封装映射1、自动映射前提实体类属性名和数据库表的字段名一致MyBatis会自动封装。2、如果字段名与实体类属性名不一致以下是解决方案数据库字段create_time、update_time。实体类成员createTime、updateTime。方式一Mapper层中使用Results和Result注解进行手动映射Results({ Result(column create_time,property createTime), Result(column update_time,property updateTime) }) Select(select * from users) //查询users表中所有字段。 public ListUser findAll(); //返回给一个List集合。方式二Mapper层sql语句中给数据库中字段起别名Select(select id,name,create_time createTime,update_time updateTime from users) public ListUser findAll();方式三推荐如果字段名与属性名符合驼峰命名规则使用Mybatis开启驼峰命名映射yml配置文件写入以下映射要求xxx_Abc xxxAbcmybatis configuration map-underscore-to-camel-case: true //此行表示开启驼峰命名映射
延伸阅读

更多相关文章

2026/11/3 10:47:09

memory __get_fault_gfp_mask

__get_fault_gfp_mask 是一个缺页异常处理路径中的辅助函数,用于为当前触发的缺页异常确定合适的内存分配标志(GFP flags)。它的核心逻辑是:如果 VMA 关联了文件,则使用该文件映射的 GFP 掩码;否则&#xf…

2026/11/3 11:47:50

Sentinel-3多载荷数据读取与预处理:SEN3、netCDF与重投影实战

1. 先把 Sentinel-3 的四套载荷摸清楚 接手这个项目的第一天,我做的第一件事不是写代码,而是把产品手册打印出来贴在工位上。原因很简单:Sentinel-3 不是一颗“拍照片”的卫星,它是一个 多载荷、多产品级别的对地观测系统 &…

2026/11/3 11:47:50

区域控制器如何重构汽车电子电气架构:线束减重与智能熔断

简介:这份2021年安波福域控制器白皮书面向汽车电子工程师、整车架构设计人员及智能网联汽车方向的学习者,聚焦电子控制单元激增带来的线束与I/O复杂性、电气化功率需求演变等现实难题,系统阐述域控制器作为区域电源分配与数据连接枢纽的架构价…

2026/11/3 11:47:50

MES与ERP协同优化采购计划的技术实践

1. 项目概述:MES与ERP协同优化采购计划 在制造业生产管理中,物料短缺和库存积压一直是困扰企业的两大痛点。我们团队通过整合MES(制造执行系统)和ERP(企业资源计划)系统,实现了采购计划与生产消…

2026/11/3 11:47:50

Flutter构建工具dartle的OpenHarmony适配实践

1. 项目背景与核心挑战在跨平台开发领域,Flutter已经成为移动端开发的主流选择之一,而dartle作为Flutter生态中的高效构建工具,其重要性不言而喻。但当我们需要将Flutter组件适配到OpenHarmony平台时,却面临着前所未有的工程化挑战…

2026/11/3 11:47:50

Unity移动端系统虚拟键盘调用与封装实践

1. 先把话说清楚:什么场景下才该用系统键盘做 Unity 移动端项目,但凡涉及"让用户敲字"这件事,绕不开一个选择题:自己画一套键盘,还是直接喊系统自带的虚拟键盘出来。我见过不少团队一开始雄心勃勃&#xff0…

2026/11/3 11:42:49

UML组合结构图:运行时对象协作与系统架构设计实战

1. 组合结构图的核心定位与价值 Composite Structure Diagram(组合结构图)作为UML 2.x家族中的重要成员,本质上是一种用于描述复杂系统内部构造的架构级工具。与传统的类图不同,它特别擅长展示运行时(runtime&#xff…

2026/11/3 7:47:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/2 6:39:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/3 1:04:48

STM32实战:基于MAX14431数字隔离器的SPI隔离通信方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/3 1:04:48

工业SPI隔离通信设计:MAX14431BAEE+与STM32L4A6RG实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/3 1:04:48

STM32+NRF24L01无线抢答器:硬件设计、通信协议与低功耗实现

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/11/3 7:47:06

面向复杂光照与角度的宠物面部识别鲁棒性增强策略

在智慧养宠时代,基于视觉的宠物身份识别技术正逐步从实验室走向家庭应用。然而,与配合度高的人类不同,宠物是典型的“非合作生物识别对象”——它们不会主动配合摄像头调整姿态,更无法控制光照环境。实际应用中,我们常…

2026/11/2 6:39:12

SSM电子书店源码全解析:结构、原理、部署与排错实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑