SpringBoot2基础

SpringBoot2

一、初始化项目

  • ①、创建project

    • image-20240104140310546
  • ②、构建maven项目

    • image-20240104140412813

    • image-20240104140442376

    • image-20240104140743820

    • 如果选项里没有8的,可以最顶上镜像换成阿里巴巴的:https://start.aliyun.com/

    • image-20240104140922464

    • image-20240104142110906

  • image-20240104152339060

  • 直接在main函数运行就行

二、SpringBoot入门

1、复制工程

  • 原则

    • 保留工程基础结构
    • 抹掉原始工程痕迹
  • 做个工程模板

    • 1、保留一个原始带controller的工程
    • 2、复制下来,把名字改成springboot2_0x_xxxxxxxxxxxx
    • image-20240104220255031
    • 3、修改文件,修改pom.xml文件
    • image-20240104220324695
    <artifactId>springboot2_test02</artifactId>
    <!--把这个名字改成springboot2_0x_xxxxxxxxxxxx-->
    
    • 删除pom.xml文件里面的name标签
    • 把文件删除只剩src和pom.xml文件
    • image-20240104220338698
    • 保留下来使用

2、基础配置

2.1、属性配置
  • 修改配置

    • properties

    • # 服务器的端口配置
      server.port=8080
      
  • yml格式**(主流)**

    • server:
        port: 8080
      
  • yaml

    • server:
        port: 8080
      
  • 当三个配置文件都存在时,properties > yml > yaml ,三者是共存叠加,并相互覆盖

2.2、yaml格式文件
2.2.1、优点
  • 容易阅读

  • 容易与脚本语言交互

  • 以数据为核心,重数据轻格式

  • 主流后缀为 .yml

2.2.2、yaml语法规则
  • 大小写敏感

  • 属性层级关系使用多行描述,每行结尾使用冒号结束

  • 使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不允许使用Tab键)

  • 属性值前面添加空格(属性名与属性值之间使用冒号+空格作为分隔)

  • #号 表示注释

  • country: china
    province: beijing
    city: beijing
    area: haidian
    
    user:
      username: zzj
      age: 18
    
    likes:   #数组
      - game
      - music
      - sleep
      
    users:							 #对象数组格式一
      - name: Tom
       	age: 4
      - name: Jerry
        age: 5
    users:							 #对象数组格式二
      -  
        name: Tom
        age: 4
      -   
        name: Jerry
        age: 5			    
    users2: [ { name:Tom , age:4 } , { name:Jerry , age:5 } ]	#对象数组缩略格式
    
2.2.3、读取yaml数据
  • //Rest模式
    @RestController
    @RequestMapping("/books")
    public class BookController {
    
        //读取yaml的单一数据
        @Value("${country}")
        private String country1;
        //读取对象数据
        @Value("${user.username}")
        private String name1;
        //读取数组里的数据
        @Value("${likes[1]}") //索引是从0开始的
        private String likes1;
        //读取数组对象里的数据
        @Value("${users[1].age}") //索引是从0开始的
        private String users1;
    
    
        @GetMapping
        public String getById(){
            System.out.println(country1);
            System.out.println(name1);
            System.out.println(likes1);
            System.out.println(users1);
            return "hello springboot";
        }
    
  • yaml文件中变量相互引用

    • baseDir: C:\window10
      
      temDir: C:\window\temp
      temDir1: ${baseDir}\temp  
      #下面这个引用了baseDir,当baseDir改变时,temDir1也会发生改变
      
    • image-20240105163241377

2.2.4、读取全部数据
  •     @Autowired   //使用自动装配将所有数据封装到一个对象 Environment 中
        private Environment env;  //这里面存着所有数据
    //通过Environment对象获取数据
    	System.out.println(env.getProperty("temDir1"));
        System.out.println(env.getProperty("user.username"));
        System.out.println(env.getProperty("likes[1]"));
    
2.2.5、指定数据封装读取
  • #当我们想要在yaml里面单独读取这个时
    user:
      username: zzj
      password: zzj0806
      age: 18
      sex:
  • 声明一个类,属性名和yaml里面的一样,用于封装yam文件里对应的数据

  • 定义为Spring管控的bean

  • 指定加载的数据

    • @Component
      @ConfigurationProperties(prefix = "user")
      public class MyUser {
      

3、整合第三方

3.1、Junit
  • @SpringBootTest(classes = JunitApplication.class)
    class Springboot2Test03JunitApplicationTests {
    	//注入你要测试的对象
        @Autowired
        private BookDao bookDao;
        @Test
        void contextLoads() {
            //执行要测试的对象对应的方法
            bookDao.save();
        }
    }
    
  • 注意:测试类所在的位置的路径 要 和main方法所在的引导类的路径一致,不一致时要进行额外操作

    • image-20240105214618637
  • 当二者路径不一样时,会导致测试类找不到引导类了,就找不到IOC容器,可以用@SpringBootTest来指定路径

    • image-20240105214831773
  • 总结

    1. 导入测试对应的starter
    2. 测试类使用@SpringBootTest修饰
    3. 使用自动装配的形式添加要测试的对象
    4. 测试类如果存在于引导类所在包或子包中无需指定引导类
    5. 测试类如果不存在于引导类所在的包或子包中需要通过classes属性指定引导类
3.2、mybatis
3.2.1、创建工程
  • 创建到这个位置时,和Junit不一样了

    • image-20240106193235698
  • 将application.propertis文件改成yml文件后缀,并配置数据库信息

    • #配置相关信息
      spring:
        datasource:
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://localhost:3306/ssm
          username: root
          password: zzj0806
      
  • 创建数据库表tbl_book

    • image-20240106220743307
    • image-20240106220756835
  • 创建bookDao接口和实体类对象

    • public class Book {
          private Integer id;
          private String type;
          private String name;
          private String description;
      
          public Integer getId() {
              return id;
          }
      
    • @Mapper
      public interface BookDao {
          @Select("select * from tbl_book where id = #{id}")
          public Book getById(Integer i);
      }
      
  • 写测试方法

    • @SpringBootTest
      class Springboot2Test04MybatisApplicationTests {
      
          @Autowired
          private BookDao bookDao;
      
          @Test
          void contextLoads() {
              System.out.println(bookDao.getById(6));
          }
      
      }
      
  • 总结

    1. 整合操作需要勾选MyBatis技术,也就是导入MyBatis对应的starter

    2. 数据库连接相关信息转换成配置

    3. 数据库SQL映射需要添加@Mapper被容器识别到

    4. MySQL 8.X驱动强制要求设置时区

      • 修改url,添加serverTimezone设定
      • 修改MySQL数据库配置
    5. 驱动类过时,提醒更换为com.mysql.cj.jdbc.Driver

3.3、mybatis-plus
  • <!-- mybatis-plus -->
            <dependency>
                <groupId>com.baomidou</groupId>
                <artifactId>mybatis-plus-boot-starter</artifactId>
                <version>3.5.4</version>
            </dependency>
    
  • yml的配置一样

    • #配置相关信息
      spring:
        datasource:
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://localhost:3306/ssm
          username: root
          password: zzj0806
      
  • bookDao不一样

    • //不用写sql语句和方法了,MP里面有方法
      @Mapper
      public interface BookDao extends BaseMapper<Book> {
      
      }
      
  • 测试的方法,不是自己的写的,是MP里面内置的

    • @SpringBootTest
      class Springboot2Test05MybatisPlusApplicationTests {
      
          @Autowired
          private BookDao bookDao;
      
          @Test
          void contextLoads() {
              System.out.println(bookDao.selectById(2));
          }
      
      }
      
3.4、druid
  • <!-- pom.xml导入druid的坐标 -->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>druid-spring-boot-starter</artifactId>
        <version>1.2.20</version>
    </dependency>
    
    
  • #配置druid数据源,就修改配置信息即可
    spring:
      datasource:
        druid:
          driver-class-name: com.mysql.cj.jdbc.Driver
          url: jdbc:mysql://localhost:3306/ssm
          username: root
          password: zzj0806
    

4、整合案例

4.1、项目架构
  • image-20240107215848280
4.2、yml配置信息
  • image-20240107215929645
4.3、dao层
  • 使用lombok快速初始化实体类对象
    • image-20240107220051124
  • 创建bookDao接口,使用了mybatis-plus快速开发—继承baseMapper
    • image-20240107220131100
4.4、service层
  • 创建bookService接口,并使用mybatis-plus快速开发—继承 IService

    • image-20240107220345461
  • 创建实现类 bookServiceImp,并使用mybatis-plus快速开发----继承 ServiceImpl,并实习bookService接口

    • image-20240107220506274
4.5、controller层
  • 创建类 R 来实现传输两层数据,一层状态flag,一层数据data
    • image-20240107220723603
  • 创建controller类,并使用rust风格,并采用两层数据返回前端
    • image-20240107220845732
    • image-20240107220907358
  • 因为使用了分页功能,要创建一个mybatis-plus的分页拦截器
    • image-20240107221024457
4.6、前端

题注不太会,稍稍自动生成一下

  • image-20240107221148008

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

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

相关文章

【MIdjourney】图像角度关键词

本篇仅是我个人在使用过程中的一些经验之谈&#xff0c;不代表一定是对的&#xff0c;如有任何问题欢迎在评论区指正&#xff0c;如有补充也欢迎在评论区留言。 1.侧面视角(from side) 侧面视角观察或拍摄的主体通常以其侧面的特征为主要焦点&#xff0c;以便更好地展示其轮廓…

K近邻算法(K-Nearest Neighbors,KNN)

K近邻算法&#xff08;K-Nearest Neighbors&#xff0c;KNN&#xff09;是一种基本的监督学习算法&#xff0c;常用于分类和回归任务。KNN的基本思想是通过测量不同样本点之间的距离&#xff0c;将新样本的类别标签赋予其K个最近邻居中出现最频繁的类别。 以下是KNN的基本原理和…

CAN协议层详细介绍

CAN物理层协议介绍-CSDN博客 目录 1. CAN的波特率及位同步 2. 位时序分解 3. CAN的报文种类及结构 3.1 报文的种类 3.2 数据帧的结构 3.2.1 仲裁段 3.2.2 RTR位(Remote Transmission Request Bit) 3.2.3 IDE位(Identifier Extension Bit) 3.2.3 SRR位(Substi…

【代码】Keras3.0:实现残差连接

简介 残差连接是一种非常重要的网络结构创新&#xff0c;最早被广泛应用于ResNet&#xff08;Residual Neural Network&#xff09;模型中&#xff0c;由何凯明等人在2015年的论文"Deep Residual Learning for Image Recognition"中提出。 核心思想 通过引入“short…

RK3399平台入门到精通系列讲解(实验篇)共享工作队列的使用

🚀返回总目录 文章目录 一、工作队列相关接口函数1.1、初始化函数1.2、调度/取消调度工作队列函数二、信号驱动 IO 实验源码2.1、Makefile2.2、驱动部分代码工作队列是实现中断下半部分的机制之一,是一种用于管理任务的数据结构或机制。它通常用于多线程,多进程或分布式系统…

频率域滤波图像复原的python实现——数字图像处理

原理 维纳滤波的原理是基于统计方法&#xff0c;旨在通过最小化信号的估计误差来改善信号的质量。它在处理具有噪声干扰的信号时特别有效。维纳滤波旨在从受噪声干扰的信号中恢复原始信号。它假设信号和噪声都是随机过程&#xff0c;并且它们的统计特性是已知的或可估计的。维…

【数据仓库与联机分析处理】数据仓库工具Hive

目录 一、Hive简介 &#xff08;一&#xff09;什么是Hive &#xff08;二&#xff09;优缺点 &#xff08;三&#xff09;Hive架构原理 &#xff08;四&#xff09;Hive 和数据库比较 二、MySQL的安装配置 三、Hive的安装配置 1、下载安装包 2、解压并改名 3、配置环…

Dockerfile的ENV

文章目录 环境总结测试测试1测试2测试3测试4测试5测试6 参考 环境 RHEL 9.3Docker Community 24.0.7 总结 如果懒得看测试的详细信息&#xff0c;可以直接看结果&#xff1a; 一条 ENV 指令可以定义多个环境变量。Dockerfile里可以包含多条 ENV 指令。环境变量的值不需要用…

崩坏:星穹铁道「V1.5攻略」绥园新增隐藏任务攻略-巡镝篇

这里是闲游盒小盒子&#xff0c;本期为大家带来的是1.5版本绥园地图内的隐藏任务攻略&#xff0c;希望能对各位开拓者有帮助。 01.小鬼心愿&#xff08;赞许*1&#xff09; 与青丘台入口旁的小鬼对话接取任务&#xff0c;带它去任务目标点即可。 02.眼一直闭&#xff08;成就*…

Devtools热部署

1.添加Devtools jra <groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope><optional>true</optional> </dependency>2.添加plugin插件 <build><…

K8S--持久卷(PersistentVolume)的用法

原文网址&#xff1a;K8S--持久卷(PersistentVolume)的用法-CSDN博客 简介 本文介绍K8S的持久卷(PersistentVolume)的用法。 目标&#xff1a;用持久卷的方式将主机的磁盘与容器磁盘映射&#xff0c;安装nginx并运行。 --------------------------------------------------…

关于对象存储的若干事

引言 最近在阅读鸣嵩的一篇文章&#xff0c;数据库的下一场革命&#xff1a;S3 延迟已降至原先的 10%&#xff0c;云数据库架构该进化了 收获很多&#xff0c;过去时间也基于对象存储做过一些功能实现&#xff0c;特记录下。关于鸣嵩&#xff1a; 曹伟&#xff0c;花名鸣嵩&am…

MySQL视图 索引 面试题

一. 视图 视图&#xff1a;一种虚拟存在的表&#xff0c;行和列的数据来自定义视图的查询中使用的表&#xff0c;并且是在使用视图时动态生成的&#xff0c;只保存了sql逻辑&#xff0c;不保存查询结果 视图语法 -- 创建 create view 视图名 as 查询语句;-- 使用 select * f…

大数据 Yarn - 资源调度框架

Hadoop主要是由三部分组成&#xff0c;除了前面我讲过的分布式文件系统HDFS、分布式计算框架MapReduce&#xff0c;还有一个是分布式集群资源调度框架Yarn。 但是Yarn并不是随Hadoop的推出一开始就有的&#xff0c;Yarn作为分布式集群的资源调度框架&#xff0c;它的出现伴随着…

Cache伪共享

伪共享 什么是伪共享 为了解决计算机系统中主内存与CPU之间运行速度差问题&#xff0c;会在CPU与主内存之间添加一级或者多级高速缓冲存储器(Cache)。 这个Cache一般是被集成到CPU内部的&#xff0c;所以也叫CPU Cache。 在Cache内部是按行存储的&#xff0c;其中每一行称为…

springboot 房屋租赁系统

spring boot mysql mybatis 前台后端

【二】使用create-vue创建vue3的helloworld项目(推荐)

create-vue 官网&#xff1a;快速上手 | Vue.js create-vue 是 Vue3 的专用脚手架&#xff0c;使用 vite 创建 Vue3 的项目&#xff0c;也可以选择安装需要的各种插件&#xff0c;使用更简单。 1、使用方式 npm create vuelatest这个命令会安装和执行 create-vue&#xff0…

位运算--二进制中1的个数(含常见的二进制运算操作)

目录 二进制中1的个数操作 1 查看第k位的数字是否为1操作2 lowbit操作 解题代码&#xff1a; 原题链接: 二进制中1的个数 给定一个长度为 n 的数列&#xff0c;请你求出数列中每个数的二进制表示中 1 的个数。 输入格式 第一行包含整数 n 。 第二行包含 n 个整数&#xff0c…

聚道云软件连接器助力某新能源行业公司实现付款流程自动化

客户介绍&#xff1a; 某新能源行业公司是一家集研发、生产、销售新能源汽车于一体的综合性新能源企业。公司业务遍及全球多个国家和地区&#xff0c;拥有庞大的供应商网络和采购需求。 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; 客户痛点&#xf…

Unity中Shader面片一直面向摄像机

文章目录 前言一、实现思路1、 我们要实现模型面片一直跟着摄像机旋转&#xff0c;那么就需要用到旋转矩阵2、确定 原坐标系 和 目标坐标系3、确定旋转后坐标系基向量 二、确定旋转后 坐标系基向量 在 原坐标系 下的值1、Z轴基向量2、假设Y轴基向量 和 世界空间下 的Y轴方向一致…
最新文章