一、整合JUnit
1. 新建一个模块,选择web界面时什么都不选,直接建立
2. 导入测试对应的starter
<?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.7.2</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
<groupId>com.jf</groupId>
<artifactId>springboot_04_junit</artifactId>
<version>0.0.1-SNAPSHOT</version>
<name>springboot_04_junit</name>
<description>springboot_04_junit</description>
<properties>
<java.version>1.8</java.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
</project>
3. 测试类使用@SpringBootTest修饰
package com.jf;
import com.jf.dao.BookDao;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class Springboot04JunitApplicationTests {
//1.你要测试的对象
@Autowired
private BookDao bookDao;
@Test
void contextLoads() {
//2.执行要测试的对象对应的方法
bookDao.save();
}
}
4. 使用自动装配的形式添加要测试的对象
package com.jf.dao;
public interface BookDao {
public void save();
}
package com.jf.dao.impl;
import com.jf.dao.BookDao;
import org.springframework.stereotype.Repository;
@Repository
//写在数据层
public class BookDaoImpl implements BookDao {
@Override
public void save() {
System.out.println("book dao is running...");
}
}
- 名称:@SpringBootTest
- 类型:测试类注解
- 位置:测试类定义上方
- 作用:设置当JUnit加载的SpringBoot启动类
- 范例:
@SpringBootTest
class Springboot04JunitApplicationTests {
}
5. 启动?
6. 测试类放到其他位置后不能使用该怎么办?
? ? ? ? 如果测试类在引导类所在包或者其子包下,不需要对其进行管理,如果将测试类放到其他包下会进行报错,那么我们该如何解决呢?其实很简单,只需要在测试类的注解上加一行代码即可:
@SpringBootTest(classes = Springboot04JunitApplication.class)
把引导类的类名放进去运行即可。
????????如果不用上面的注解,也可以使用 @ContextConfiguration? 指定了你的配置文件或配置类是哪一个,但一般都使用上面的方法
- 名称:@SpringBootTest
- 类型:测试类注解
- 位置:测试类定义上方
- 作用:设置当JUnit加载的SpringBoot启动类
- 范例:
@SpringBootTest(classes = Springboot04JunitApplication.class)
class Springboot04JunitApplicationTests {
}
注意事项:
????????如果测试类在spring boot启动类的包或者子包中,可以省略启动类的设置,也就是省略classes的设定
二、整合MyBatis
1. 新建一个模块
? ? ? ? 创建新模块,选择spring boot初始化,并配置模块相关基础信息
? ? ? ? 勾选 MyBatis 技术,也就是导入 MyBatis 对应的stater
2.?配置相关信息
#2.配置相关信息
spring:
datasource:
driver-class-name: com.mysql.jdbc.Driver
url: jdbc:mysql://localhost:3306/tbl_book
username: root
password: 123123
3. 创建实体类、数据层接口与映射配置
package com.jf.domain;
public class Book {
private Integer id;
private String type;
private String name;
private String description;
public Integer getId() {
return id;
}
public void setId(Integer id) {
this.id = id;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
@Override
public String toString() {
return "Book{" +
"id=" + id +
", type='" + type + '\'' +
", name='" + name + '\'' +
", description='" + description + '\'' +
'}';
}
}
? ? ? ? 数据库SQL映射需要添加 @Mapper 被容器识别到
package com.jf.dao;
import com.jf.domain.Book;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
@Mapper
public interface BookDao {
@Select("select * from tbl_book where id = #{id}")
public Book getById(Integer id);
}
4. 测试类
package com.jf;
import com.jf.dao.BookDao;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class Springboot05MybatisApplicationTests {
@Autowired
private BookDao bookDao;
@Test
void contextLoads() {
System.out.println(bookDao.getById(1));
}
}
5. 运行
6. 常见问题处理
6.1 时区设置
? ? ? ? 如果使用较低版本可能会出现以下错误:
?修改方式:只需要在yml中的url地址中添加时区,或者在数据库建立的时候直接添加时区
url: jdbc:mysql://localhost:3306/tbl_book??serverTimezone=UTC
6.2? 驱动类过时
错误:
修改方式:
driver-class-name: com.mysql.cj.jdbc.Driver
三、整合MyBatis-Plus
MyBatis与MyBatis-Plus区别:
1. 新建一个工程
????????在选择mybatis-plus时发现没有这个选项,较快的做法是使用阿里云来创建项目,创建项目可查看Spring Boot——第02讲入门创建项目的方式_萧篱衣的博客-CSDN博客
????????另一种做法是依然像之前建项目一样,只导入mysql驱动创建出来。一般还是使用这种做法。
2. 寻找maven下的坐标,可以通过mvnrepository获取
<dependency>
<groupId>com.baomidou</groupId>
<artifactId>mybatis-plus-boot-starter</artifactId>
<version>3.4.3</version>
</dependency>
? ? ? ? 由于springboot 中未收录MyBatis-Plus的坐标版本,需要指定对应的version,报错的话刷新一下maven即可,将下面的web服务删掉?
3. 配置yml
? ? ? ? 使用上个项目的yml即可
4. 定义数据层接口与映射配置,继承BaseMapper
? ? ? ? domain使用上个项目的即可,dao层稍微进行改动
package com.jf.dao;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.jf.domain.Book;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Select;
@Mapper
public interface BookDao extends BaseMapper <Book>{
}
5. 测试类注入dao
package com.jf;
import com.jf.dao.BookDao;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class Springboot06MybatisPlusApplicationTests {
@Autowired
private BookDao bookDao;
@Test
void contextLoads() {
System.out.println(bookDao.selectById(2));
}
}
6. 启动
错误:
原因:
? ? ? ? mp会自动映射,但是我的数据库表是tbl_book,而他识别到为book
解决办法:
????????在yml中进行配置
#设置mp相关的配置
mybatis-plus:
global-config:
db-config:
table-prefix: tbl_
四、整合Druid
1. 新建一个工程
????????在选择Druid时发现没有这个选项,那么和上面一样,我们手动添加
2. 寻找maven下的坐标,可以通过mvnrepository获取
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid-spring-boot-starter</artifactId>
<version>1.2.6</version>
</dependency>
? ? ? ? 由于springboot 中未收录MyBatis-Plus的坐标版本,需要指定对应的version,报错的话刷新一下maven即可,将下面的web服务删掉?
3. 配置yml
#2.配置相关信息
#spring:
# datasource:
# driver-class-name: com.mysql.cj.jdbc.Driver
# url: jdbc:mysql://localhost:3306/tbl_book?serverTimezone=UTC
# username: root
# password: 123123
# type: com.alibaba.druid.pool.DruidDataSource
#推荐使用这种写法
spring:
datasource:
druid:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://localhost:3306/tbl_book?serverTimezone=UTC
username: root
password: 123123
4. 定义数据层接口与映射配置
? ? ? ? domain、dao使用上个项目的即可
5. 测试类注入dao
package com.jf;
import com.jf.dao.BookDao;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
@SpringBootTest
class Springboot07DruidApplicationTests {
@Autowired
private BookDao bookDao;
@Test
void contextLoads() {
System.out.println(bookDao.getById(3));
}
}
6. 启动
数据库脚本:百度网盘 请输入提取码
提取码:mnrl
?
|