一、SpringBoot整合JUnit
SpringBoot整合JUnit
- 导入测试对应的starter
- 测试类使用@SpringBootTest修饰
- 使用自动装配的形式添加要测试的对象
@SpringBootTest注解
- 名称:@SpringBootTest
- 类型:测试类注解
- 位置:测试类定义上方
- 作用:
设置JUnit加载的SpringBoot启动类
- 相关属性:
classes:设置SpringBoot启动类
实例:
@SpringBootTest
class MyspringbootApplicationTests {
@Test
void contextLoads() {
System.out.println("hello");
}
}
classes属性指定引导类
- 测试类如果存在于引导类所在包或子包中无需指定引导类
- 测试类如果不存在于引导类所在的包或子包中需要通过classes
属性指定引导类
//@SpringBootTest 设置JUnit加载的SpringBoot启动类
@SpringBootTest(classes = Application.class)
class MyspringbootApplicationTests {
@Test
void contextLoads() {
System.out.println("hello");
}
}
二、SpringBoot整合Mybatis
SpringBoot整合Mybatis
- 勾选MyBatis技术,也就是导入MyBatis对应的starter
- 数据库连接相关信息转换成配置
- 数据库SQL映射需要添加@Mapper被容器识别到
1. 创建项目
填写项目相关的组和名称
导入MyBatis对应的starter,可以在创建项目的时候勾选如下:
只是整合mybatis,这里没有使用web环境
或者手动添加:
<dependencies>
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<optional>true</optional>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
2. 设置数据源参数
在配置文件application.yml中添加数据源
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/db1
username: root
password: 1234
SpringBoot版本低于2.4.3(不含)
,Mysql驱动版本大于8.0时
,需要在url连接串中配置时区或在MySQL数据库端配置时区解决此问题
jdbc:mysql://localhost:3306/ssm_db?serverTimezone=Asia/Shanghai
驱动类过时,提醒更换为
com.mysql.cj.jdbc.Driver
3. 创建实体类
package com.aaa.domain;
import lombok.Data;
/**
* @author : 尚腾飞
* @version : 1.0
* @createTime : 2022/10/6 12:14
* @description :
*/
@Data
public class Book {
private Integer id;
private String name;
private String author;
private String publish;
private Double price;
private Integer stock;
}
4. 定义数据层接口与映射配置
package com.aaa.mapper;
import com.aaa.domain.Book;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* @author : 尚腾飞
* @version : 1.0
* @createTime : 2022/10/6 12:14
* @description :
*/
@Mapper
public interface BookMapper {
@Select("select * from book")
List<Book> getAll();
}
5. 测试
package com.aaa;
import com.aaa.mapper.BookMapper;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class SpringbootmybatisdemoApplicationTests {
@Autowired
private BookMapper bookMapper;
@Test
void contextLoads() {
System.out.println(bookMapper.getAll());
}
}
结果
其他说明
1. 使用mapper.xml文件
这里没有使用mapper.xml文件,如果用mapper.xml文件需要在application.yml中指定mapper.xml文件的地址
mybatis:
mapper-locations: classpath:mapper/*.xml
提示: 如果mapper.xml文件和mapper接口在同一目录并且名称相同时则无需指定
。注意:接口名称和xml文件一定要一模一样
查看target文件中BookMapper接口和BookMapper.xml文件的位置
2. mapper接口被容器识别到的两种方式
第一种: 在mapper接口上添加@Mapper注解
@Mapper
public interface BookMapper {
List<Book> getAll();
}
第二种: 在引导类上添加@MapperScan注解扫描到放mapper接口的目录
@SpringBootApplication
@MapperScan("com.aaa.mapper")
public class SpringbootmybatisdemoApplication {
public static void main(String[] args) {
SpringApplication.run(SpringbootmybatisdemoApplication.class, args);
}
}
三、SpringBoot整合Mybatis-Plus
SpringBoot整合Mybatis-Plus
- 手工添加MyBatis-Plus对应的starter
- 数据层接口使用BaseMapper简化开发
- 需要使用的第三方技术无法通过勾选确定时,需要手工添加坐标
1. 添加坐标
手动添加SpringBoot整合MyBatis-Plus的坐标,可以通过mvnrepository获取
mvnrepository地址:https://mvnrepository.com/
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.5.1</version>
</dependency>
由于SpringBoot中未收录MyBatis-Plus的坐标版本,需要指定对应的Version
2. 在mapper接口中继承BaseMapper
@Mapper
public interface BookMapper extends BaseMapper<Book> {
}
其他同mybatis
3. 测试
@SpringBootTest
class SpringbootmybatisdemoApplicationTests {
@Autowired
private BookMapper bookMapper;
@Test
void contextLoads() {
System.out.println(bookMapper.selectList(null));
}
}
结果:
四、SpringBoot整合Druid
SpringBoot整合Druid
1. 导入Druid对应的starter
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.12</version>
</dependency>
2. 变更Druid的配置方式
第一种:书写方便(推荐)
spring:
datasource:
druid:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/db1
username: root
password: 1234
第二种:
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/db1
username: root
password: 1234
type: com.alibaba.druid.pool.DruidDataSource