SpringBoot学习日记

news/2024/5/3 12:40:41/文章来源:https://blog.csdn.net/m0_74091229/article/details/133712521

Spring程序与SpringBoot程序对比

 SpringBoot程序优点

  • 起步依赖(简化依赖配置)
  • 自动装配(简化常用工程相关配置)
  • 辅助功能(内置服务器,......)

 内嵌Tomcat

REST风格

REST简介

REST,表现形式状态转化
传统风格资源描述形式:
        http://localhost/user/getById?id=1
        http://localhost/user/saveUser

REST风格描述形式
        http://localhost/user/1
        http://localhost/user

优点:

  • 隐藏资源的访问行为,无法通过地址得知对资源是何种操作
  • 书写简化

按照REST风格访问资源时使用行为动作区分对资源进行了何种操作

  • http://localhost/users                                        查询全部用户信息        GET ( 查询 )
  • http://localhost/users/1                                     查询指定用户信息        GET ( 查询 )
  • http://localhost/users                                        添加用户信息               POST (新增/保存)
  • http://localhost/users                                        修改用户信息               PUT (修改/更新)
  • http://localhost/users/1                                     删除用户信息               DELETE( 删除 )

上述行为是约定方式,约定不是规范,可以打破,所以称REST风格,而不是REST规范

描述模块的名称通常使用复数,也就是加s的格式描述,表示此类资源,而非单个资源,例如:users,books,accounts......

基础配置

属性配置

1.修改属性

  • 修改服务器端口
    server.port=8081
    
  • 设置日志相关
    logging.level.root=debug
  • 关闭运行日志图标
    spring.main.banner-mode=off

2. yaml语法规则

  • 大小写敏感
  • 属性层级关系使用多行描述,每行结尾使用冒号结束
  • 使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不允许使用Tab键)
  • 属性值前面添加空格(属性名与属性值之间使用冒号+空格作为分隔)
  • # 表示注释

注意属性名冒号后面与数据之间有一个空格

yaml文件格式icon-default.png?t=N7T8http://xn--yaml-t85fs66fflkpnf

数据层开发

分页功能

分页操作需要设定分页对象Page

    @Testvoid textGetPage(){IPage page = new Page(2,5);userDao.selectPage(page,null);}

IPage对象中封装了分页操作中的所有数据

  • 数据
  • 当前页码值
  • 每页数据总量
  • 最大页码值
  • 数据总量

分页操作时在MyBatisPlus的常规操作基础上增强得到的,内部时动态的SQL语句。因此需要增强对应的功能,使用MyBatisPlus拦截器实现

@Configuration
public class MPConfig {@Beanpublic MybatisPlusInterceptor mybatisPlusInterceptor(){MybatisPlusInterceptor interceptor = new MybatisPlusInterceptor();interceptor.addInnerInterceptor(new PaginationInnerInterceptor());return interceptor;}
}

业务层开发

快速开发

使用快速开发

  • 使用MyBatisPlus提供有业务层通用接口(ISService<T>)与业务层通用实现类(ServiceImpl<M,T>
  • 在通用类基础上做功能重载或者功能增加
  • 注意重载时不要覆盖原始操作,避免原始提供的功能丢失

表现层开发

1. 设计统一的返回值结果类型便于前端开发数据
2. 返回值结果类型可以根据需求自行定义,没有固定格式
3. 返回值结果模型类用于后端与前端进行数据格式统一,也称为前后端数据协议

注解学习

名称:@RequestMapping
类型:方法注解
位置:SpringMVC控制器方法定义上方
作用:设置当前控制器方法请求访问路径
范例:

    @RequestMapping(value = "/users",method = RequestMethod.POST)public String save(@RequestBody User user){System.out.println("user save..."+user);return "{'module':'user save'}";}

名称:@PathVariable
类型:形参注解
位置:SpringMVC控制器方法形参定义前面
作用:绑定路径参数与处理器方法形参之间的关系,要求路径参数名与形参名一一对应
范例:

    @DeleteMapping("/users/{id}")public String delete(@PathVariable Integer id){studentMapper.deleteById(id);return "删除成功";}/*指定id删除用户*/

@RequestBody        @RequestParam        @PatchVariable
区别:

  • @RequestParam 用于接收url地址传参或表单传参
  • @RequestBody 用于接收 json 数据
  • @PatchVariable 用于接收路径参数,使用{参数名称}描述路径参数

应用

  • 后期开发中,发送请求超过1个时,以 json 格式为主,@RequestBody 应用较广
  • 如果发送非 json 格式数据,选用@RequestParam 接收请求参数
  • 采用RESTful进行开发,当参数数量较少时,例如一个,可以采用@PatchVariable 接收请求路径变量,通常用于传递id值

名称:@RestController
类型:类注解
位置:基于SpringMVC的RESTful开发控制器类定义上方
作用:设置当前控制类为RESTful风格,等同于@Controller与@ResponseBody两个注解组合功能
范例:

@RestController
public class StudentController {}

整合JUnit
名称:@SpringBootText
类型:测试类注解
位置:测试类定义上方
作用:设置JUnit加载的SpringBoot启动类
范例:

@SpringBootTest(classes = Application.class)
class SpringBoot01ApplicationTests {}

相关属性:classes:设置SpringBoot启动类

注意事项:如果测试类在SpringBoot启动类的包或子包中,可以省略启动类的配置,也就是classes的设定

整合MyBatis
1. 核心配置:数据库连接相关信息(练什么?谁连?什么权限)
2. 映射配置:SQL映射(XML/注解)

spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/demousername: rootpassword: root

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

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

相关文章

.Net Core 6 运行环境手动安装流程

安装.NET Core 6 概述 在开始之前&#xff0c;我们首先需要了解一下整个安装过程的流程。下面的表格将展示安装.NET Core 6的步骤以及每一步需要做的事情。 步骤 动作 说明 1 下载.NET Core 6 SDK 从官方网站下载.NET Core 6 SDK安装包 2 安装.NET Core 6 SDK …

山西电力市场日前价格预测【2023-10-16】

日前价格预测 预测说明&#xff1a; 如上图所示&#xff0c;预测明日&#xff08;2023-10-16&#xff09;山西电力市场全天平均日前电价为356.38元/MWh。其中&#xff0c;最高日前电价为502.82元/MWh&#xff0c;预计出现在18: 30。最低日前电价为224.63元/MWh&#xff0c;预计…

长沙上市公司董秘联谊会,来啦!

上市公司的数量&#xff0c;是判断一座城市经济实力的重要指标。 在当前复杂的竞争环境中&#xff0c;提升上市公司的数量和质量&#xff0c;以产业思维促进城市内外的上市公司合作交流&#xff0c;是城市提升经济综合实力的有效举措。 10月13日&#xff0c;在由长沙市委统战…

享搭低代码平台:加速企业应用开发,轻松搭建表单和报表

在当今快节奏的商业环境中&#xff0c;企业需要快速响应市场需求并提供高效的解决方案。然而&#xff0c;传统的应用开发过程繁琐、耗时&#xff0c;并且需要专业的编程技能。为了解决这些问题&#xff0c;享搭低代码平台应运而生。本文将详细介绍享搭低代码平台的特点和优势&a…

Android Studio Giraffe | 2022.3.1

Android Gradle 插件和 Android Studio 兼容性 Android Studio 构建系统以 Gradle 为基础&#xff0c;并且 Android Gradle 插件 (AGP) 添加了几项专用于构建 Android 应用的功能。下表列出了各个 Android Studio 版本所需的 AGP 版本。 如果您的项目不受某个特定版本的 Andr…

springboot+html实现简单注册登录

前端&#xff1a; register.html <!DOCTYPE html> <html lang"en" > <head><meta charset"UTF-8"><title>register</title><link rel"stylesheet" type"text/css" href"/css/style.css&…

智慧水利:山海鲸数字孪生的革新之路

一、概念 什么是港口&#xff1f; "港口"通常指的是一个水域或岸边的设施&#xff0c;用于装载、卸载、储存和处理货物、以及提供与海上、河流或湖泊交通相关的服务。港口可以包括各种类型的码头、码头设备、仓库、货物运输设施、以及各种管理和物流设施。 什么是数…

Protocols/面向协议编程, DependencyInjection/依赖式注入 的使用

1. Protocols 定义实现协议&#xff0c;面向协议编码 1.1 创建面向协议实例 ProtocolsBootcamp.swift import SwiftUI/// 颜色样式协议 protocol ColorThemeProtocol {var primary: Color { get }var secondary: Color { get }var tertiary: Color { get } }struct DefaultCol…

UPS监控技术,你一定要试试,太绝了!

UPS&#xff08;不间断电源&#xff09;监控系统是一种关键的技术&#xff0c;用于监视、管理和维护不间断电源设备&#xff0c;以确保电力供应的稳定性和可用性。这对于各种组织和企业来说至关重要&#xff0c;因为电力中断可能导致生产中断、数据丢失和设备损坏&#xff0c;对…

语音识别whisper的介绍、安装、错误记录

介绍 Whisper是OpenAI于2022年9月份开源的通用的语音识别模型。它是在各种音频的大型数据集上训练的模型&#xff0c;也是一个可以执行多语言语音识别、语音翻译和语言识别的多任务模型。 论文链接&#xff1a;https://arxiv.org/abs/2212.04356 github链接&#xff1a;https:…

这三大爆款开源项目竟出自同一个20人的小公司?

环界云计算是一家非常小的公司&#xff0c;在成立不足两年的时间里&#xff0c;便孵化出三个备受瞩目的开源项目&#xff1a;Sealos、Laf、FastGPT。而更让人惊叹的是&#xff0c;这家公司只有 21 名员工。 项目概览 Sealos&#xff1a;拥有 11,000 颗 Star&#xff0c;这是一…

NNDL:作业3:分别使用numpy和pytorch实现FNN例题

对比【numpy】和【pytorch】程序&#xff0c;总结并陈述。 激活函数Sigmoid用PyTorch自带函数torch.sigmoid()&#xff0c;观察、总结并陈述。 激活函数Sigmoid改变为Relu&#xff0c;观察、总结并陈述。 损失函数MSE用PyTorch自带函数 t.nn.MSELoss()替代&#xff0c;观察、总…

vs studio Ctrl+D 快捷键失效(无法复制行)

打开 调试/选项/环境/键盘&#xff0c;然后设置如下 快去试试吧

大坑-MATLAB图片转存时需注意的点

MATLAB中图片的保存和转存有一个巨大的陷阱&#xff0c;我也是在吃了大亏后发现的&#xff0c;正常情况下&#xff0c;MATLAB跑完实验&#xff0c;生成的图片如下 放大后这样 可以方便修改坐标轴标题&#xff0c;最初我就是因为想修改坐标轴标题才给它放大的&#xff0c;因为…

Web自动化测试进阶:网页中难点之expected_ conditions的应用与原理

前言 expected_conditions是selenium的一个模块&#xff0c;可以对网页上元素进行判断&#xff0c;一般配合WebDriverWait使用。 详细介绍说明 1、title_is&#xff0c;判断当前页面的标题是否等于预期&#xff0c;返回布尔值 也可以使用driver.title打印当前页面的标题 f…

ant design pro v6如何引入第三方js?如腾讯地图等!

由于ant pro隐藏.html&#xff0c;需要通过他们约定的方式引入即可。 1.配置config文件 /config/config.tsheadScripts: [// 解决首次加载时白屏的问题{ src: /scripts/loading.js, async: true },{ src: "https://map.qq.com/api/gljs?v1.exp&keyOB4BZ-D4W3U-B7VV…

docker部署的jenkins配置(接口自动化)

目录 一、jenkins汉化1.点击Manage Jenkins&#xff08;系统管理&#xff09;&#xff0c;点击Plugins&#xff08;插件&#xff09;2.安装Locale插件 二、jenkins配置allure报告1.安装allure插件2.配置 三、配置jenkins项目1.新建任务2.创建项目3.源码管理4.构建触发器5.增加构…

【C++】C++11—— 包装器

​ ​&#x1f4dd;个人主页&#xff1a;Sherry的成长之路 &#x1f3e0;学习社区&#xff1a;Sherry的成长之路&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;C学习 &#x1f3af;长路漫漫浩浩&#xff0c;万事皆有期待 上一篇博客&#xff1a;【C】C11…

Rockchip 3588 开关HDMI

需求 上层Android要控制hdmi&#xff0c;dp等等(带有节点的功能)的开关&#xff0c;配置&#xff0c;获取状态。 方案 我们可以从Settings的源码中找到方法&#xff1a; 从HdmiSettings.java的源码中可以看到如下注释&#xff1a; 相关节点定义&#xff1a; 控制函数如下&…

小黑第一次参加主持活动,没有出错被得到了鼓励,周日完赛人生中第一次山道马拉松的leetcode之旅:167. 两数之和 II - 输入有序数组

小黑代码 class Solution:def twoSum(self, numbers: List[int], target: int) -> List[int]:# 数组长度n len(numbers)# 定义双指针head 0tail n - 1# 开始双指针操作while head < tail:if numbers[head] numbers[tail] < target:head 1elif numbers[head] nu…