03、整合第三方技术
3.1、整合JUnit
1、SpringBoot
整合JUnit
@SpringBootTest
class Springboot04JunitApplicationTests {
//1.注入需要测试的对象
@Autowired
private BookDao bookDao;
@Test
void contextLoads() {
//2.执行要测试的对象对应的方法
bookDao.save();
}
}
2、SpringBootTest
- 名称:
@SpringBootTest
- 类型:测试类注解
- 位置:测试类定义上方
- 作用:设置
JUnit
加载的SpringBoot
启动类 - 相关属性
- classes:设置
SpringBoot
启动类
- classes:设置
- 范例:
小结:
导入测试对应的
starter
测试类使用
@SpringBootTest
修饰使用自动装配的形式添加要测试的对象
3、此时,将测试类换个位置存放,则无法运行该测试类
则需要使用classes
属性来指定引导类
@SpringBootTest(classes = Springboot04JunitApplication.class)
class Springboot04JunitApplicationTests {}
注意:
如果测试类在
SpringBoot
启动类的包或子包中,可以省略启动类的设置,也就是省略classes
的设定
小结:
- 测试类如果存在于引导类所在包或子包中无需指定引导类
- 测试类如果不存在于引导类所在的包或子包中需要通过
classes
属性指定引导类
3.2、整合MyBatis
1、需要配置:
- 核心配置:数据库连接相关信息(连什么?连谁?什么权限?)
- 映射配置:SQL映射(XML/注解)
2、步骤:
①:创建新模块,选择Spring初始化,并配置模块相关基础信息
②:选择当前模块需要使用的技术集(MyBatis、MySQL)
③:设置数据源参数
#2、配置相关信息
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/ssm_db
username: root
password: root
④:定义数据层接口与映射配置
@Mapper
public interface BookDao {
@Select("select * from tbl_book where id = #{id}")
public Book getById(Integer id);
}
⑤:测试类中注入dao接口,测试功能
@SpringBootTest
class Springboot05MybatisApplicationTests {
@Autowired
private BookDao bookDao;
@Test
void contextLoads() {
Book book = bookDao.getById(1);
System.out.println(book);
}
}
小结:
- 勾选
MyBatis
技术,也就是导入MyBatis
对应的starter
- 数据库连接相关信息转换成配置
- 数据库
SQL
映射需要添加@Mapper
被容器识别到
3、SpringBoot
整合MyBatis
常见问题
①MySQL 8.X
驱动强制要求设置时区
-
修改
url
,添加serverTimezone
设定-
SpringBoot
版本低于2.4.3(不含),Mysql
驱动版本大于8.0
时,需要在url
连接串中配置时区url: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC
-
-
修改
MySQL
数据库配置(略)
②驱动类过时,提醒更换为com.mysql.cj.jdbc.Driver
driver-class-name: com.mysql.cj.jdbc.Driver
3.3、整合MybatisPlus
1、MyBatis-Plus
和MyBatis
区别
- 导入坐标不同
- 数据层实现简化
2、步骤
①:手动添加SpringBoot
整合MyBatis-Plus
的坐标,可以通过mvnrepository.com获取
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3</version>
</dependency>
注意:
由于
SpringBoot
中未收录MyBatis-Plus
的坐标版本,需要指定对应的Version
②:定义数据层接口与映射配置,继承BaseMapper
@Mapper
public interface BookDao extends BaseMapper<Book> {
}
③:设置Mp相关的配置
#设置Mp相关的配置
#给所有的表加一个前缀tb_
mybatis-plus:
global-config:
db-config:
table-prefix: tbl_
④:其他同SpringBoot
整合MyBatis
小结:
- 手工添加
MyBatis-Plus
对应的starter
- 数据层接口使用
BaseMapper
简化开发- 需要使用的第三方技术无法通过勾选确定时,需要手工添加坐标
3.4、整合Druid
- 指定数据源类型
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC
username: root
password: root
type: com.alibaba.druid.pool.DruidDataSource
- 导入
Druid
对应的starter
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.6</version>
</dependency>
- 变更
Druid
的配置方式
spring:
datasource:
druid:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/ssm_db?serverTimezone=UTC
username: root
password: root
3.5、总结
整合任意第三方技术
- 导入对应的
starter
- 配置对应的设置或采用默认配置