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包依赖的传递性
例子:
- A.jar --依赖–> B.jar
- 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. 转换为十进制数为
32^0.
32^1
32^2
32^3
32^4
将这几个数相加结果为91
同样8进制转换为十进制是一样的算法下图所示 8进制是2的3次方所以3位表示一个数字
将8进制转的777换为二进制的数为
由于8进制是指3位数
所以将7拆分为4+2+1
所以12^0=1
12^2=2
1*2^3=8
所以八进制的7转换为2进制的数为111
那么八进制的777转换为2进制111111111
8进制转换为十进制为
将157转换为十进制数为
78^0=7
58^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);
}
}