SpringBoot 整合MyBatis、Junit5的实践过程
作者:YDS829
一、前言
自从使用SpringBoot后,前言部分不需要再过多赘述Maven的坐标了,但是由于我们需要集成外部的工具(框架),所以可能还是需要引入坐标,有些在创建模块的时候可以使用图形化界面勾选,有些依旧只能在pom.xml中手动添加,本文需要的坐标如下:
<dependency>
<groupId>org.mybatis.spring.boot</groupId>
<artifactId>mybatis-spring-boot-starter-test</artifactId>
<version>3.0.5</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>com.mysql</groupId>
<artifactId>mysql-connector-j</artifactId>
<scope>runtime</scope>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>二、整合Junit
正常创建一个SpringBoot的模块,这里先模拟一个Service类,在里面设计一个add方法:
@Service
public class UserService {
public void add(){
System.out.println("add...");
}
}编写测试类如下:
/**
* userService的测试类
*/
//junit5
@ExtendWith(SpringExtension.class)
//junit4
//@RunWith(SpringRunner.class)
//@SpringBootTest(classes = SpringBootTestApplication.class)
@SpringBootTest//当测试类的包名和java中主包相同 或 测试类包名属于主包的子包,可以不用写(classes = SpringBootTestApplication.class)
class UserServiceTest {
@Autowired
private UserService userService;
@Test
public void testAdd(){
userService.add();
}
}注意:这里我演示的是Junit5的测试注解,如果需要使用Junit4,则需要导入Junit4的包,4和5的注解略有不同。

效果如下(不必关注警告,这是在提示未来版本可能会取消掉某个功能):

三、整合MyBatis
1.注解开发
首先先创建一个表,用于模拟各种操作(这里我们只演示查询操作)

同时需要一个User类来封装数据:
public class User {
private int id;
private String username;
private String password;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
@Override
public String toString() {
return "User{" +
"id=" + id +
", username='" + username + '\'' +
", password='" + password + '\'' +
'}';
}
}然后我们需要在yml配置文件中配置数据源:
# datasource
spring:
datasource:
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql:///springboot
password: 123456
username: root这里我们直接创建一个映射接口,使用注解开发,其中@Mapper表示扫描这个映射接口,自动生成这个接口的实现类,里面我们只写一个查询方法。
@Mapper
public interface UserMapper {
@Select("select * from t_user")
public List<User> findAll();
}创建测试类:
@ExtendWith(SpringExtension.class)
@SpringBootTest
class SpringBootMybatisApplicationTests {
@Autowired
private UserMapper userMapper;
@Test
public void testFindAll1() {
List<User> list = userMapper.findAll();
System.out.println(list);
}
}效果如下:

2.xml配置
虽然注解相对方便,但是在多表操作的大项目中,使用xml配置映射文件会让可读性更高,并且许多老项目一直沿用的xml配置,所以依旧需要了解xml的编写方式。
首先是接口,我们这里重新写一个:
@Mapper
public interface UserXmlMapper {
public List<User> findAll();
}然后就是对应的xml映射文件:
<mapper namespace="com.yds.springbootmybatis.mapper.UserXmlMapper">
<select id="findAll" resultType="user">
select * from t_user
</select>
</mapper>同时,既然已经使用了xml配置,就必须配置核心配置文件,这里我们直接写在yml配置文件中,也就是说,我们在yml配置文件中配置了两个东西,一个是数据源,一个是核心配置文件(在核心配置文件中取了别名):
#mybatis mybatis: mapper-locations: classpath:mapper/*Mapper.xml #mapper的映射文件路径 type-aliases-package: com.yds.springbootmybatis.domain #vconfig-location: #指定mybatis的核心配置文件的
同时重写测试类:
@ExtendWith(SpringExtension.class)
@SpringBootTest
class SpringBootMybatisApplicationTests {
@Autowired
private UserMapper userMapper;
@Autowired
private UserXmlMapper userXmlMapper;
@Test
public void testFindAll1() {
List<User> list = userMapper.findAll();
System.out.println(list);
}
@Test
public void testFindAll2() {
List<User> list = userXmlMapper.findAll();
System.out.println(list);
}
}效果如下:

到此这篇关于SpringBoot 整合MyBatis、Junit5的文章就介绍到这了,更多相关SpringBoot 整合MyBatis、Junit5内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!
您可能感兴趣的文章:
- SpringBoot整合MyBatis和SpringBoot整合MyBatis-Plus教程
- SpringBoot整合mybatisPlus实现批量插入并获取ID详解
- SpringBoot整合Mybatis-plus关键词模糊查询结果为空
- SpringBoot + Mybatis Plus 整合 Redis的详细步骤
- 全网最新springboot整合mybatis-plus的过程
- SpringBoot3整合Mybatis完整版实例
- Springboot整合mybatis-plus使用pageHelper进行分页(使用步骤)
- Springboot整合Mybatis和SQLite的详细过程
- SpringBoot+JUnit5+MockMvc+Mockito单元测试的实现
