SpringBoot2
一、初始化项目
-  ①、创建project 
-  ②、构建maven项目 -   
-   
-   
-  如果选项里没有8的,可以最顶上镜像换成阿里巴巴的:https://start.aliyun.com/ 
-   
-   
 
-  
-   
-  直接在main函数运行就行 
二、SpringBoot入门
1、复制工程
-  原则 - 保留工程基础结构
- 抹掉原始工程痕迹
 
-  做个工程模板 - 1、保留一个原始带controller的工程
- 2、复制下来,把名字改成springboot2_0x_xxxxxxxxxxxx
 
- 3、修改文件,修改pom.xml文件
 
 <artifactId>springboot2_test02</artifactId> <!--把这个名字改成springboot2_0x_xxxxxxxxxxxx-->- 删除pom.xml文件里面的name标签
- 把文件删除只剩src和pom.xml文件
 
- 保留下来使用
 
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: haidianuser:username: zzjage: 18likes: #数组- game- music- sleepusers: #对象数组格式一- name: Tomage: 4- name: Jerryage: 5 users: #对象数组格式二- name: Tomage: 4- name: Jerryage: 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;@GetMappingpublic String getById(){System.out.println(country1);System.out.println(name1);System.out.println(likes1);System.out.println(users1);return "hello springboot";}
-  yaml文件中变量相互引用 -  baseDir: C:\window10temDir: C:\window\temp temDir1: ${baseDir}\temp #下面这个引用了baseDir,当baseDir改变时,temDir1也会发生改变
-   
 
-  
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: zzjpassword: zzj0806age: 18sex: 男
-  声明一个类,属性名和yaml里面的一样,用于封装yam文件里对应的数据 
-  定义为Spring管控的bean 
-  指定加载的数据 -  @Component @ConfigurationProperties(prefix = "user") public class MyUser {
 
-  
3、整合第三方
3.1、Junit
-  @SpringBootTest(classes = JunitApplication.class) class Springboot2Test03JunitApplicationTests {//注入你要测试的对象@Autowiredprivate BookDao bookDao;@Testvoid contextLoads() {//执行要测试的对象对应的方法bookDao.save();} }
-  注意:测试类所在的位置的路径 要 和main方法所在的引导类的路径一致,不一致时要进行额外操作 
-  当二者路径不一样时,会导致测试类找不到引导类了,就找不到IOC容器,可以用@SpringBootTest来指定路径 
-  总结 - 导入测试对应的starter
- 测试类使用@SpringBootTest修饰
- 使用自动装配的形式添加要测试的对象
- 测试类如果存在于引导类所在包或子包中无需指定引导类
- 测试类如果不存在于引导类所在的包或子包中需要通过classes属性指定引导类
 
3.2、mybatis
3.2.1、创建工程
-  创建到这个位置时,和Junit不一样了 
-  将application.propertis文件改成yml文件后缀,并配置数据库信息 -  #配置相关信息 spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/ssmusername: rootpassword: zzj0806
 
-  
-  创建数据库表tbl_book 
-  创建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 {@Autowiredprivate BookDao bookDao;@Testvoid contextLoads() {System.out.println(bookDao.getById(6));}}
 
-  
-  总结 -  整合操作需要勾选MyBatis技术,也就是导入MyBatis对应的starter 
-  数据库连接相关信息转换成配置 
-  数据库SQL映射需要添加@Mapper被容器识别到 
-  MySQL 8.X驱动强制要求设置时区 - 修改url,添加serverTimezone设定
- 修改MySQL数据库配置
 
-  驱动类过时,提醒更换为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.Driverurl: jdbc:mysql://localhost:3306/ssmusername: rootpassword: zzj0806
 
-  
-  bookDao不一样 -  //不用写sql语句和方法了,MP里面有方法 @Mapper public interface BookDao extends BaseMapper<Book> {}
 
-  
-  测试的方法,不是自己的写的,是MP里面内置的 -  @SpringBootTest class Springboot2Test05MybatisPlusApplicationTests {@Autowiredprivate BookDao bookDao;@Testvoid 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.Driverurl: jdbc:mysql://localhost:3306/ssmusername: rootpassword: zzj0806
4、整合案例
4.1、项目架构
4.2、yml配置信息
4.3、dao层
- 使用lombok快速初始化实体类对象 
- 创建bookDao接口,使用了mybatis-plus快速开发—继承baseMapper 
4.4、service层
-  创建bookService接口,并使用mybatis-plus快速开发—继承 IService 
-  创建实现类 bookServiceImp,并使用mybatis-plus快速开发----继承 ServiceImpl,并实习bookService接口 
4.5、controller层
- 创建类 R 来实现传输两层数据,一层状态flag,一层数据data 
- 创建controller类,并使用rust风格,并采用两层数据返回前端 
- 因为使用了分页功能,要创建一个mybatis-plus的分页拦截器 
4.6、前端
题注不太会,稍稍自动生成一下
















