SpringBoot学习日记

news2024/11/26 2:48:21

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

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

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

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

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

@Configuration
public class MPConfig {
    @Bean
    public 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.Driver
    url: jdbc:mysql://localhost:3306/demo
    username: root
    password: root

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

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

相关文章

2023年主题教育专题组织生活会对照检查材料六个方面发言材料

组织生活会发言材料&#xff0c;很多人还没写完&#xff0c;可能写着写着就不知道怎么继续了&#xff0c;其实写这类材料需要有一个好的写作框架&#xff0c;结合我们的实际情况来写。 只有那些勇敢面对困难的人&#xff0c;才能找到成功的道路。生活并非总是一帆风顺&#xff…

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…

CountDownLatch的原理

使用CountDownLatch可以实现等待多个线程执行完毕的功能&#xff0c;实现线程之间的协调&#xff0c;让它们按照我们期望的顺序执行&#xff0c;从而避免了可能出现的并发问题。 CountDownLatch是如何实现主线程等待子线程全部结束的呢&#xff1f; 代码用例 这里我们使用一段…

【TES720D】青翼科技基于复旦微的FMQL20S400全国产化ARM核心模块

板卡概述 TES720D是一款基于上海复旦微电子FMQL20S400的全国产化核心模块。该核心模块将复旦微的FMQL20S400&#xff08;兼容FMQL10S400&#xff09;的最小系统集成在了一个50*70mm的核心板上&#xff0c;可以作为一个核心模块&#xff0c;进行功能性扩展&#xff0c;特别是用…

AN动画基础——元件,组件,散件

【AN动画基础——元件&#xff0c;组件&#xff0c;散件】 元件不同元件的作用影片剪辑按钮图形元件特性 组件组件的作用组件特性 散件散件作用散件特性 本篇内容&#xff1a;认识元件&#xff0c;组件&#xff0c;散件属性 重点内容&#xff1a;元件&#xff0c;组件&#xff…

专业翻译哪家强?插件AI来帮忙!

大多数人一提到翻译软件&#xff0c;想到的应该是某度翻译或者是某歌翻译&#xff0c;日常使用也是用这两个居多&#xff0c;但是这两个甚至市面上常见的翻译软件的效果都不是很好&#xff0c;不能精准翻译到一些专有名词的意思。 那么究竟有没有好用的AI翻译呢&#xff1f;答…

DAY06_瑞吉外卖——用户地址簿功能菜品展示购物车下单

这里写目录标题 1. 用户地址簿功能1.1 需求分析1.2 数据模型1.3 导入功能代码1.4 功能测试 2. 菜品展示2.1 需求分析2.2 前端页面分析2.3 代码开发2.3.1 查询菜品方法修改2.3.2 根据分类ID查询套餐 2.4 功能测试 3. 购物车3.1 需求分析3.2 数据模型3.3 前端页面分析3.4 准备工作…

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

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

Linux系统之安装ServerBee服务器监控工具

Linux系统之安装ServerBee服务器监控工具 一、ServerBee介绍1.1 ServerBee简介1.2 ServerBee特点 二、本地环境介绍2.1 本地环境规划2.2 本次实践介绍 三、检查本地环境3.1 检查本地操作系统版本3.2 检查系统内核版本 四、安装ServerBee4.1 下载部署脚本4.2 解压下载文件4.3 部…

全流量安全分析发现内部系统外联异常

内部系统外连监控的重要性在于保护企业的信息安全和预防数据泄露&#xff0c;以下是几个重要的理由&#xff1a; 1、检测异常活动&#xff1a;通过监控内部系统的外连连接&#xff0c;可以及时发现是否有未经授权或异常的链接尝试。这可能表示存在恶意软件、黑客攻击或内部员工…

LED显示屏高刷新率和低刷新率有什么区别

LED显示屏的刷新率是指图像在LED显示屏上更新的速度&#xff0c;也即屏幕上的图像每秒钟出现的次数&#xff0c;它的单位是赫兹&#xff08;Hz&#xff09;。LED显示屏的刷新率越高&#xff0c;图像闪烁感就越小&#xff0c;稳定性也就越高&#xff0c;换言之对视力的保护也越好…

头部品牌集体扑街!2023年9月京东平板电视TOP10品牌排行榜出炉

鲸参谋监测的京东平台9月份平板电视市场最新销售数据已出炉&#xff01; 根据鲸参谋平台的数据显示&#xff0c;9月份&#xff0c;京东平台大家电品类——平板电视的整体销售呈现下滑。具体地&#xff0c;9月平板电视的销量为62万&#xff0c;环比降低约18%&#xff0c;同比降低…

DDD之领域(Domain)和子域(Subdomain)

领域驱动设计系列文章&#xff0c;点击上方合集↑ 1. 领域 领域&#xff08;Domain&#xff09;是一个组织所做的事情以及其中所包含的一切&#xff0c;领域可以表示整个业务系统。 领域&#xff0c;简单来说&#xff0c;是指一个业务或行业领域&#xff0c;例如电商、社交媒…

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

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

虹科 | 解决方案 | 经销商(OEM)方案

针对汽车厂的方案 Pico 科技是PC版示波器的市场先驱&#xff1a;我们屡次获奖的PicoScope示波器被超过20家世界领先的汽车厂选择&#xff0c;用于提高质量和降低成本。PicoScope既是示波器&#xff0c;也是频谱分析仪、NVH分析仪、发动机压缩和蓄电池/起动充电系统检测仪。我们…

ROS opencv 人脸识别

人脸识别需要在输入的图像中确定人脸&#xff08;如果存在&#xff09;的位置、大小和姿态&#xff0c;往往用于生物特征识别、视频监听、人机交互等应用中。2001年&#xff0c;Viola和Jones提出了基于Haar特征的级联分类器对象检测算法&#xff0c;并在2002年由Lienhart和Mayd…

主题教育问题清单及整改措施2023年-主题教育对照六个方面个人剖析材料

无论前方路途多么坎坷&#xff0c;都要保持内心的坚定和勇敢。生活中没有什么不可战胜的困难&#xff0c;只有我们是否愿意去面对和克服。要相信自己的能力&#xff0c;相信自己拥有足够的智慧和力量去应对一切挑战 每一次的努力都不会白费&#xff0c;每一次的奋斗都是在为自己…

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

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

BI零售数据分析方案,看了就想拥有

一份优秀的零售数据分析方案该是什么样的&#xff1f;应该是能将人、货、场、供、财的数据分析清楚、展现清楚&#xff0c;更是要具备极强的灵活自主性&#xff0c;随时按需分析。奥威BI零售数据分析方案就是这样的一份零售BI标准方案。 奥威BI零售数据分析方案 1、预设以人货…

BIM如何通过3D开发工具HOOPS实现WEB轻量化?

随着建筑行业的数字化转型和信息建模技术的不断发展&#xff0c;建筑信息模型&#xff08;BIM&#xff09;已经成为设计、建造和管理建筑项目的标准。然而&#xff0c;BIM模型通常包含大量的数据&#xff0c;导致在Web上的传输和查看效率低下。为了解决这一挑战&#xff0c;HOO…