①、创建project
②、构建maven项目
如果选项里没有8的,可以最顶上镜像换成阿里巴巴的:https://start.aliyun.com/
直接在main函数运行就行
原则
做个工程模板
<artifactId>springboot2_test02</artifactId>
<!--把这个名字改成springboot2_0x_xxxxxxxxxxxx-->
修改配置
properties
# 服务器的端口配置
server.port=8080
yml格式**(主流)**
server:
port: 8080
yaml
server:
port: 8080
当三个配置文件都存在时,properties > yml > yaml ,三者是共存叠加,并相互覆盖
容易阅读
容易与脚本语言交互
以数据为核心,重数据轻格式
主流后缀为 .yml
大小写敏感
属性层级关系使用多行描述,每行结尾使用冒号结束
使用缩进表示层级关系,同层级左侧对齐,只允许使用空格(不允许使用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 } ] #对象数组缩略格式
//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也会发生改变
@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]"));
#当我们想要在yaml里面单独读取这个时
user:
username: zzj
password: zzj0806
age: 18
sex: 男
声明一个类,属性名和yaml里面的一样,用于封装yam文件里对应的数据
定义为Spring管控的bean
指定加载的数据
@Component
@ConfigurationProperties(prefix = "user")
public class MyUser {
@SpringBootTest(classes = JunitApplication.class)
class Springboot2Test03JunitApplicationTests {
//注入你要测试的对象
@Autowired
private BookDao bookDao;
@Test
void contextLoads() {
//执行要测试的对象对应的方法
bookDao.save();
}
}
注意:测试类所在的位置的路径 要 和main方法所在的引导类的路径一致,不一致时要进行额外操作
当二者路径不一样时,会导致测试类找不到引导类了,就找不到IOC容器,可以用@SpringBootTest来指定路径
总结
创建到这个位置时,和Junit不一样了
将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
创建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));
}
}
总结
整合操作需要勾选MyBatis技术,也就是导入MyBatis对应的starter
数据库连接相关信息转换成配置
数据库SQL映射需要添加@Mapper被容器识别到
MySQL 8.X驱动强制要求设置时区
驱动类过时,提醒更换为com.mysql.cj.jdbc.Driver
<!-- 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));
}
}
<!-- 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
创建bookService接口,并使用mybatis-plus快速开发—继承 IService
创建实现类 bookServiceImp,并使用mybatis-plus快速开发----继承 ServiceImpl,并实习bookService接口
题注不太会,稍稍自动生成一下