1.知识回顾
1.1SSM框架的回顾
1.1.1Spring框架作用
1.框架: 在程序中为了 节省时间,将一些公共代码整合到一起形成了框架.
2.框架的种类: 控制数据库的框架/控制页面流转/管理框架的框架...微服务框架(当下企业开发主流形式)
3.Spring框架:管理第三方框架,使得程序在调用/开发中/浑然一体.
1.1.2Spring框架核心
1).设计思想: IOC 控制反转 由容器负责对象的创建,负责对象的生命周期
2).IOC解释: Spring在启动的时候,在内存中申请了一大块的内存空间,用来维护spring所管理的对象.
3).采用K-V的数据结构的方式,管理spring中的对象.
4).如果spring容器想要管理第三方的框架,利用(反射机制----->根据class实例化(新建)对象),之后按照规则将第三方的框架的对象使用MAP集合的形式进行数据的存储(对象生命周期).只要spring容器不关闭,则对象可以一直被人引用.
5).细节: Map<k:v> k是对象的唯一标识. v:被spring管理的对象.
例子: UserMapper接口如何被Spring容器管理的呢?
Map<userMappaer,userMapper接口的实例化对象>
6).DI: 依赖注入 @Autowried和@Resource
说明: 将spring容器中的对象,按照指定的规则进行注入.
注入方式: 1.根据key的方式进行注入
2.根据class类型的方式进行注入.
属性赋值方式: 一般利用Spring中的DI完成.
总结: spring中IOC和DI是一起使用的.缺一不可.
1.2SpringMVC框架作用
- SpringMVC说明:该框架是前台框架,主要的任务就是接收客户端提交的参数,同时在服务器中将业务处理完成之后,实现了页面跳转.
- 调用原理图:
请求说明:
1).请求中一般包含用户提交参数.
2).在响应中有2种返回值类型 1.JSON字符串 2.返回页面.
1.3Mybatis框架作用
- 1.Mybatis作用:
1).主要用来实现与数据库的交互. JAVA代码 -------Mybatis(JDBC)------ Mysql数据库
2).可以利用对象的方式将数据进行封装. java代码 ------万物皆对象-------- 数据库记录
数据库记录:
2).利用对象进行封装
public Class User{
private Integer id;
private String name;
private Integer age;
private String sex;
}
2.STS安装
2.1STS介绍
1.下载地址:
2.JDK安装校验 JDK是java程序的运行环境
3.安装IDE(java代码开发)工具
说明: 通过如下的命令安装STS
命令:java -jar STSxxxxxxxxxxx.jar
安装完成之后:效果如下:
4.运行,输入地址
2.2安装报错说明
版本说明:
1.检查windows版本
2.检查JDK版本
3.JDK环境变量配置
4.sts效果展现
2.3STS环境配置
1).修改字符集编码格式
2).配置JDK环境变量
3).配置maven工具
3.1).引入maven 一站式的项目管理工具
3.2).添加maven配置文件
3.3).配置阿里云镜像
<!--阿里云镜像-->
<mirror>
<id>nexus-aliyun</id>
<mirrorOf>*</mirrorOf>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>
4).关闭校验
3.SpringBoot框架
3.1新建SpringBoot项目
1).创建SpringBoot
2).编辑项目信息
3).选择组件
3.2编辑配置文件,解决STS整合SpringBoot问题
说明:修改POM.xml配置文件,代码如下:
<?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>
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.0.RELEASE</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.jt.vip</groupId>
<artifactId>springboot_demo_1</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot_demo_1</name>
<description>Demo project for Spring Boot</description>
<!--引入新的配置 -->
<properties>
<java.version>1.8</java.version>
<maven-jar-plugin.version>3.1.1</maven-jar-plugin.version>
<skipTests>true</skipTests>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
2).更新Maven项目:
报错说明:
更新操作:
3).启动测试:
4).启动效果 如果出现8080,则表示成功.
3.3SpringBoot-YML配置文件说明
# 2.缩进 代表层级关系
server:
port: 8080 #tomcat服务器默认端口号都是8080
#类比: java运行环境JDK
# 项目运行环境服务器(软件) tomcat
在这里插入代码片
3.4SpringBoot入门案例
package com.jt.controller;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**自己编辑的包/类,应该是主启动类的子级. **/
@RestController //将类交给Spring容器管理,同时启动SpringMVC框架
//用来接收用户请求 该程序该类的返回值是JSON串/字符串
//@Controller //返回的是页面名称
public class HelloController {
/**
* 需求: 用户通过网址,获取服务器信息.
* url请求地址: http://localhost:8080/getMsg
* http://通信协议名称
* localhost:8080: 访问本地服务器 IP 127.0.0.1:端口
* getMsg: 请求地址
* 参数: 页面提交给服务器的数据
* 返回值: 服务器做完业务处理之后,响应给客户的数据.
* 一次请求/一次响应 web规范
*
* 报错的状态码: 404:请求地址服务器不能正确的匹配.
*
*
*/
/**
* 方法 1.访问修改符 public
* 2.返回值类型 String 字符串
* 3.方法名称 getMsg 在一个类中方法名称及参数不能重复.
* 4.方法体: 业务执行的逻辑及返回数据的定义.
* @return
*
* 重启服务器: 刷新内存数据.
*/
@RequestMapping("/getMsg") //用来匹配用户的请求url地址的.
public String getMsg() {
return "您好JAVA,我是刘昱江";
}
/**
* 小作业:
* 1.http://localhost:8080/getEat 询问你中午吃啥了??
* 2.http://localhost:8080/myLove 询问你爱谁????
*/
}
3.5SpringBoot属性赋值
3.5.1 属性赋值的作用
说明:有时当类中的属性的值发生变化时,如果直接将代码写死到程序时,如果将来数据发生变化,则需要修改代码.
耦合性高.
3.5.2 @Value的方式为属性赋值
1).编辑YML配置文件
#语法 1.key: (空格)value
# 2.缩进 代表层级关系
server:
port: 8080 #tomcat服务器默认端口号都是8080
#类比: java运行环境JDK
# 项目运行环境服务器(软件) tomcat
#YML配置文件在SpringBoot(Spring+SpringMVC等)程序中启动时 会被默认加载
#为属性赋值 如果操作时有红线则不管.
my:
food: 番茄炒蛋 #k-v
book: java编程思想
2).为属性赋值操作
@RestController //说明返回值是json串
public class MsgController {
//定义一个属性
@Value("${my.food}") //从容器中获取数据,之后完成赋值操作.
private String food; //变量
@Value("${my.book}")
private String book;
@RequestMapping("/myMsg")
public String myMsg() {
return "我中午吃了:"+food+"|我读的书是:"+book;
}
}
3).页面效果
3.5.3 利用properties文件管理数据.
说明:因为将所有的数据都保存到YML配置文件中时,会造成管理的混乱.所以需要pro文件进行单独的管理.并且如果有需要,可以准备多个pro文件.
1).创建pro文件
2).加载指定的pro文件,并且修改字符集编码格式
3).为属性赋值:
//@PropertySource(value="classpath:/properties/my.properties",encoding="UTF-8")
@Value("${my2.food}") //如果想要取值,必须先赋值.
private String food2;
@Value("${my2.book}")
private String book2;
@RequestMapping("/myMsg2")
public String myMsg2() {
return "我中午吃了:"+food2+"|我读的书是:"+book2;
}
3.6程序热部署
说明:如果需要修改代码之后,程序可以自动的重启,则需要配置热部署
用法:引入jar包
<!--支持热部署 -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
3.7SpringBoot程序执行的原理
总结:SpringBoot启动启动时,必须包含的配置标签有3个.
<!--1.parent标签 jar包文件(工具)
通过parent标签,将springBoot中所有依赖的jar包,进行了统一的定义.
-->
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.3.0.RELEASE</version> <!--2.3.0最新版本包 -->
<relativePath /> <!-- lookup parent from repository -->
</parent>
2).依赖标签
<!-- dependencies表示依赖. 需要什么包,添加什么依赖!!!! -->
<dependencies>
<!--原理: spring-boot-starter 启动器 代表者自动的配置和部署,可以直接使用
其中的功能-->
<dependency>
<groupId>org.springframework.boot</groupId>
<!-- web表示springMVC框架 -->
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>org.junit.vintage</groupId>
<artifactId>junit-vintage-engine</artifactId>
</exclusion>
</exclusions>
</dependency>
<!--支持热部署 只要添加了依赖包,则springBoot程序启动时,
就会自动的加载运行. 对于用户而言,可以直接使用其服务.
-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
</dependencies>
3).build标签
<!--build是负责项目打包部署 一般将项目开发完成之后,需要进行服务器部署(Linux)
-->
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
3.8LomBok插件配置
3.8.1LomBok插件作用
作用:为POJO对象生成get/set方法.简化代码的开发
//user表示实体对象 一般与数据库中的表进行关联.
public class User {
//属性------数据库中的字段
private Integer id; //整数 一般用Integer/Long 区间>Integer
private String name; //String 一般写字符串
private Integer age;
private String sex;
//一般都是添加set 为对象中的属性赋值 get:从对象中取值时使用.
//如果需要动态的生成get/set方法,则可以使用lombok插件.
}
3.8.2引入jar包
<!--引入插件lombok 自动的set/get/构造方法插件 -->
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
</dependency>
3.8.3安装插件
1).lombok.jar包文件位置
2).根据坐标,查找lombok的位置
3).通过java 命令 执行 xxxx.jar
命令: java -jar lombok-1.18.12.jar
效果展现:
点击Install之后会提示代码执行成功!!!.
4.检查lomBok是否有效
说明:在STS的根目录中检查是否有lomBok的jar包文件
5).将STS开发工具重启.
检查STS是否可以正常启动.
3.8.4LOMBOK插件使用
//user表示实体对象 一般与数据库中的表进行关联.
@Data //证明lombok引入成功
@Accessors(chain=true) //链式加载
@NoArgsConstructor //定义无参构造方法 如果什么都不写,默认添加无参构造
@AllArgsConstructor //定义全参构造方法 如果添加了全参构造,必须先添加无参构造
//为什么呢? 解释:乌龟的屁股!!!! 龟腚(规定)
public class User {
//属性------数据库中的字段
private Integer id; //整数 一般用Integer/Long 区间>Integer
private String name; //String 一般写字符串
private Integer age;
private String sex;
//一般都是添加set 为对象中的属性赋值 get:从对象中取值时使用.
//如果需要动态的生成get/set方法,则可以使用lombok插件.
}
3.8.5LOMBOK测试案例
@RestController
public class UserController {
@RequestMapping("/getUser")
public User getUser() {
//1.定义User对象
User user = new User(); //无参构造
user.setId(101) //赋值操作有效
.setName("tomcat猫")
.setAge(18)
.setSex("公");
//2.利用构造方法(创建对象的方法)为user对象赋值
User user2 = new User(102, "jerry", 17, "公");
return user2;
}
}
测试效果:
4.作业
1.将今天讲过的注解 整理成笔记(纸/word/text/xmind…)
2.Mybatis完成user表的 CRUD操作. (最好完成/不会留下作业记录 写写思路) 做!!!
目标:练习简单sql语句,mybatis用法
1.findAll() 查询所有的user表记录
2.insertUser() 新增user数据 user数据利用构造方法添加
3.deleteUserById() 根据Id值,删除user数据.
4.updateUserById() 根据Id值,修改user数据.
来源:oschina
链接:https://my.oschina.net/u/4303276/blog/4311389