springboot框架

maven的jar包的下载的网站
https://mvnrepository.com/

什么是框架

框架就是一个机器,就如同一个糖葫芦,我们只需要把这个糖葫芦的材料放入到机器里,机器会自动加工成一个既好吃又好看的糖葫芦;

SpringBoot

SpringBoot介绍

Spring Boot是由Pivotal团队提供的全新框架,其设计目的是用来简化新Spring应用的初始搭建以及开发过程。该框架使用了特定的方式来进行配置,从而使开发人员不再需要定义样板化的配置。通过这种方式,Spring Boot致力于在蓬勃发展的快速应用开发领域(rapid application development)成为领导者。

作用: SpringBoot的推出 让程序员更加专注于业务处理, SpringBoot是学习微服务框架基石

Spring 和SpringBoot关系 :

SpringBoot是Spring的工具API框架

2.2 SpringBoot入门案例
2.2.1 安装SpringBoot插件
1).IDEA破解版本,自带SpringBoot插件 所以无需安装
2).IDEA社区版本.需要手动安装一个SpringBoot插件.就是下面的插件;

创建springboot项目

破解版本创建springboot的项目
请添加图片描述

社区版本创建springboot的项目

请添加图片描述

请添加图片描述

然后在点击next
请添加图片描述

在这里插入图片描述

在这里插入图片描述

执行main方法检查运行是否正常
在这里插入图片描述

如图所示表示程序正常
在这里插入图片描述

如果项目创建出问题

1).检查系统环境变量JDK,其次还要检查maven的配置

在这里插入图片描述

检查maven配置
在这里插入图片描述

parent标签 的作用

1.parent标签 父级工程
parent标签,SpringBoot:将现有主流的框架都进行了整合,
在内部完成了jar包的依赖的配置.如果用户需要,则只添加某些核心包
那么所有的依赖都会按照规则自动的下载.

Springboot的优势

springboot中配置类不需要写!
Springboot通过启动项的方法的 进行jar包文件的加载. 同时这些功能中的配置项 SpringBoot有些也会自动的完成. 无特殊的要求 无需手动的配置.
这就是开箱即用的思想!!!

build标签在springboot框架中存在;

关于build标签说明

	1.build标签它是maven工程的要求.
	2.作用: 完成项目的打包/发布等一系列的功能.
	3.该标签的使用是SpringBoot必须的,如果没有该标签则项目无法使用jar包运行

SpringBoot Maven操作

项目打包
在这里插入图片描述

使用cmd命令进行项目发布

java命令运行项目
1.将jar包文件放置到指定的目录下.
在这里插入图片描述

在项目的jar包的目录中打开cmd窗口输入以下命令

java -jar 8080.jar

其他的命令

2.dos命令
1.cd 切换目录
2.dir 查看当前目录结构
3.cls 清屏

项目关闭:

1.直接将dos窗口关闭(即直接点击 x 号)
2. ctrl + c 万能的关闭指令

关于maven的jar包报错

在这里插入图片描述

检查maven配置
idea的maven的路径是否正确
曲本地仓库中删除重新下载(即点击下面的红色的圆圈里的按钮)
请添加图片描述

没有主清单的报错

原因:在pom.xml文件中缺少builder标签
请添加图片描述

关于jar包依赖传递性

问题描述
问题: 当引入webjar包时, 其他jar包文件如何依赖的?

maven jar包依赖的传递性
例子:

  1. A.jar --依赖–> B.jar
  2. B.jar —依赖–> C.jar

当下载了A.jar那么B.jar和C.jar都会被下载;

maven原理说明:
1.当maven解析pom.xml文件时,会根据maven坐标查找指定的jar包文件.

在这里插入图片描述

2.当jar包加载完成之后,由于该项目也是maven工程,所以maven工具会解析该项目的pom.xml文件

请添加图片描述

根据POM.xml文件 再次加载依赖包 直到所有的jar包依赖加载完成
在这里插入图片描述

maven 如何保证jar包依赖安全性(了解)

算法: SHA1
SHA-1(英语:Secure Hash Algorithm 1,中文名:安全散列算法1)是一种密码散列函数,美国国家安全局设计,并由美国国家标准技术研究所(NIST)发布为联邦数据处理标准(FIPS)。SHA-1可以生成一个被称为消息摘要的160位(20字节)散列值,散列值通常的呈现形式为40个十六进制数。

关于hash问题:

16进制数:09 a-f。hash底层又8位。

所以8位16进制数有多少种组合。(24)8=2^32.

原理:第一位有每个位置都有16个不同,并且有8位;组成有 2^32 种组合

如果相同hash值那么key不一定相同,但key相同那么hash一定相同;

请添加图片描述

核心原理的说明

判断传递前后的sha1算法是否相同,如果相同则标识传输正常,
如果不同,则文件有问题.

在这里插入图片描述

SpringBoot学习
配置文件说明
** springboot框架会自动生成application.properties文件且默认端口8080,如果修改端口那么可以在该端口里进行修改;**
关于properties文件说明
说明: 虽然pro文件是SpringBoot默认配置文件.但是其中编码格式比较繁琐,不便于查看.所以在项目中一般使用YML文件

请添加图片描述

由于Springboot提供的配置文件properties文件代码比较不方便(比如没有代码提示),所以一般使用.yml文件进行配置;

请添加图片描述

yml文件为属性进行赋值(通过@value注解可以为对象dept的属性进行赋值)

请添加图片描述

.yml文件


#YML文件语法
## 1.YML数据结构k-v结构
## 2.k与v 需要使用 :"空格" 连接
## 3.YMl配置文件有父子级关系 所以注意缩进项的位置
server:
  port: 8090    #配置端口
  servlet:      #web项目发布路径
    context-path: /  #/表示根目录

#定义dept属性值 YML文件默认支持UTF-8
dept:
  id: 100
  name: 财务部
  

@Value属性赋值

springBoot为属性赋值,在pojo类中
在YML配置文件中编辑key=value结构,之后利用注解为属性赋值.

编辑YML配置文件请添加图片描述

springboot测试类的代码,
注意事项: 以后写代码都必须写到主启动类的同包及子包中

在springboot中不要写@comscan(包扫描注解),底层封装在启动类里,在同包及其子包会自动进行扫描;

在这里插入图片描述

利用properties文件为属性赋值
3.3.1 编辑pro文件


#程序读取时默认iso-8859-1
dept.id2=110
dept.name2=springboot测试

在编辑properties文件需要在pojo层的对象里加@PropertySource(value = “classpath:/dept.properties”,encoding = “UTF-8”)这个注解

pojo的代码
在这里插入图片描述

总结
在properties文件中 需要在pojo层的代码中加的注解有@PropertySource(value = “classpath:/dept.properties”,encoding = “UTF-8”) 以及 @value这两个注解

而在yml文件中 需要在pojo层的代码中加的注解有@value

lombok插件(自动的set/get/构造方法插件)

安装插件
在这里插入图片描述

在使用lombok需要加入相应的包

<!--引入插件lombok 自动的set/get/构造方法插件  -->
		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
		</dependency>

lombok在对象中加入注解

this代表当前对象

在这里插入图片描述


@Data   //data是lombok使用最多的 自动生成get/set/toString/equals/hashcode等方法
@Accessors(chain = true) //重写set方法,返回this对象 用于链式加载。 注意普通的set方法是不能链式加载(普通set方法即在使用快捷键生成的set方法)
@NoArgsConstructor  //无参构造
@AllArgsConstructor //全参构造

yml文件



#默认环境选项
spring:
  profiles:
    active: prod

#环境分割
---
#YML文件语法
## 1.YML数据结构k-v结构
## 2.k与v 需要使用 :"空格" 连接
## 3.YMl配置文件有父子级关系 所以注意缩进项的位置
spring:
  config:
    activate:
      on-profile: prod
server:
  port: 80    #配置端口
  servlet:      #web项目发布路径
    context-path: /  #/表示根目录

#定义dept属性值 YML文件默认支持UTF-8
dept:
  id: 100
  name: 财务部

#环境分割线
---

# 每个环境都应该有自己的名称
spring:
  config:
    activate:
      on-profile: test
server:
  port: 8080    #配置端口
  servlet:      #web项目发布路径
    context-path: /  #/表示根目录

#定义dept属性值 YML文件默认支持UTF-8
dept:
  id: 100
  name: 集團本部

二进制转换为十进制

比如33333转换为十进制的数字为 32^0. (次方0数是下标,2表示几进制,3表示的是几进制的数字)
所以二进制的 33333. 转换为十进制数为
3
2^0.
32^1
3
2^2
32^3
3
2^4
将这几个数相加结果为91
同样8进制转换为十进制是一样的算法下图所示 8进制是2的3次方所以3位表示一个数字
将8进制转的777换为二进制的数为
由于8进制是指3位数
所以将7拆分为4+2+1
所以12^0=1
1
2^2=2
1*2^3=8
所以八进制的7转换为2进制的数为111
那么八进制的777转换为2进制111111111

8进制转换为十进制为
将157转换为十进制数为
78^0=7
5
8^1=40
1*8^2=64
所以8进制数转换为十进制数为111
16进制表示0-9 A-F

在这里插入图片描述

在cmd的命令中
Javac 表示编译的命令将.java的文件编译成.class文件
ide编程工具。一般使用idea的ide 还有ecplice的ide

创建mybatis的项目

new —>moudle —>next
请添加图片描述
点击next
请添加图片描述
请添加图片描述

编辑


<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
	xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd">
	<modelVersion>4.0.0</modelVersion>
	<groupId>com.jt</groupId>
	<artifactId>springboot_demo_2</artifactId>
	<version>0.0.1-SNAPSHOT</version>
	<name>springboot_demo_2</name>
	<description>Demo project for Spring Boot</description>

	<parent>
		<groupId>org.springframework.boot</groupId>
		<artifactId>spring-boot-starter-parent</artifactId>
		<version>2.4.5</version>
		<relativePath/> <!-- lookup parent from repository -->
	</parent>

	<properties>
		<java.version>1.8</java.version>
	</properties>
	<dependencies>

		<!--
			spring-boot-starter 启动项
			当程序解析到该jar包时,就会按照jar包内的配置实例化对象
			包括数据源的配置. 加载数据源......
		-->
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-jdbc</artifactId>
		</dependency>

		<!--引入数据库驱动 -->
		<dependency>
			<groupId>mysql</groupId>
			<artifactId>mysql-connector-java</artifactId>
			<scope>runtime</scope>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-web</artifactId>
		</dependency>

		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-devtools</artifactId>
			<scope>runtime</scope>
			<!--只对当前项目有效-->
			<optional>true</optional>
		</dependency>

		<dependency>
			<groupId>org.projectlombok</groupId>
			<artifactId>lombok</artifactId>
			<!--true该jar包文件父子项目之间不传递.-->
			<!--<optional>true</optional>-->
		</dependency>
		<dependency>
			<groupId>org.springframework.boot</groupId>
			<artifactId>spring-boot-starter-test</artifactId>
			<scope>test</scope>
		</dependency>

		<!--spring整合mybatis-plus -->
		<dependency>
			<groupId>com.baomidou</groupId>
			<artifactId>mybatis-plus-boot-starter</artifactId>
			<version>3.4.2</version>
		</dependency>
	</dependencies>

	<build>
		<plugins>
			<plugin>
				<groupId>org.springframework.boot</groupId>
				<artifactId>spring-boot-maven-plugin</artifactId>
				<configuration>
					<!--在项目打包时将lombok包除外.-->
					<excludes>
						<exclude>
							<groupId>org.projectlombok</groupId>
							<artifactId>lombok</artifactId>
						</exclude>
					</excludes>
				</configuration>
			</plugin>
		</plugins>
	</build>

</project>

编辑mapper类


package com.jt.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jt.pojo.DemoUser;
import org.apache.ibatis.annotations.Mapper;

import java.util.List;
/*注意事项: basemapper必须添加泛型对象 切记!!!*/
public interface DemoUserMapper extends BaseMapper<DemoUser> {
    //使用MP不要重载里边的方法 容易解析异常
    List<DemoUser> findAll();

    void insertUser(DemoUser user);

    void updateUser(String oldName, String nowName, String sex);
}


编辑pojo类

package com.jt.pojo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import lombok.Data;
import lombok.experimental.Accessors;

@Data
@Accessors(chain = true)    //重写set方法
//1.如果没有添加注解的属性值,则默认以类名(DemoUser)当做表名demouser
@TableName("demo_user") //对象与表绑定
public class DemoUser {
    @TableId(type = IdType.AUTO)        //定义主键自增
    //@TableId(type = IdType.ASSIGN_UUID) //UUID随机hash算法 几乎保证不重复
    private Integer id;
    //@TableField(value = "name",exist = true) 名称一致可以省略
    private String name;
    private Integer age;
    private String sex;
}

编辑启动类


package com.jt;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication  //标识主启动类的注解
@MapperScan("com.jt.mapper")    //将Mapper接口交给容器管理
public class SpringBootRun {

    public static void main(String[] args) {
        SpringApplication.run(SpringBootRun.class,args);
    }
}

编辑测试类


package com.jt;

import com.jt.mapper.DemoUserMapper;
import com.jt.pojo.DemoUser;
import org.apache.catalina.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.List;

@SpringBootTest
public class TestSpringBoot {

    @Autowired
    private DemoUserMapper userMapper;

    //数据的查询
    @Test
    public void testFindAll(){
        //代理的测试  jdk动态代理
        System.out.println(userMapper.getClass());
        System.out.println(userMapper.findAll());
    }

    //新增用户
    @Test
    public void testInsert(){
        DemoUser user = new DemoUser();
        user.setId(null).setName("mybatis信息").setAge(18).setSex("男");
        userMapper.insertUser(user);
    }

    //将mybatis name="mybatis信息" 改为"测试信息".要求sex="男"
    //update demo_user set name="测试信息"
    // where name="mybatis信息" and sex="xx"
    //更新操作
    @Test
    public void testUpdate(){
        //1.封装数据
        String oldName = "mybatis信息";
        String nowname = "测试信息";
        String sex = "男";
        userMapper.updateUser(oldName,nowname,sex);
    }

    //测试MybatisPlus
    @Test
    public void testSelect(){

        List<DemoUser> userList =
                userMapper.selectList(null);
        System.out.println(userList);
    }

}





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值