SpringBoot 整合MyBatis、Junit5的实践过程

 更新时间:2025年10月21日 09:08:51   作者:YDS829  
本文介绍了SpringBoot集成JUnit5和MyBatis的开发实践,本文结合实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧

一、前言

自从使用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内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • java中实现兼容ie6 7 8 9的spring4+websocket

    java中实现兼容ie6 7 8 9的spring4+websocket

    这篇文章主要介绍了java中实现兼容ie6 7 8 9的spring4+websocket程序代码,十分的简单实用,有需要的小伙伴可以参考下。
    2015-06-06
  • Java中的Lambda表达式及其应用小结

    Java中的Lambda表达式及其应用小结

    Java中的Lambda表达式是一项极具创新性的特性,它使得Java代码更加简洁和高效,尤其是在集合操作和并行处理方面,这篇文章主要介绍了Java中的Lambda表达式及其应用,需要的朋友可以参考下
    2025-04-04
  • 使用 mybatis 自定义日期类型转换器的示例代码

    使用 mybatis 自定义日期类型转换器的示例代码

    这篇文章主要介绍了使用 mybatis 自定义日期类型转换器的示例代码,这里使用mybatis中的typeHandlers 实现的,本文通过实例代码给大家介绍的非常详细,需要的朋友可以参考下
    2022-03-03
  • SpringBoot 自定义+动态切换数据源教程

    SpringBoot 自定义+动态切换数据源教程

    这篇文章主要介绍了SpringBoot 自定义+动态切换数据源教程,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-12-12
  • Spring Boot web项目的TDD流程

    Spring Boot web项目的TDD流程

    TDD(Test-driven development) 测试驱动开发,简单点说就是编写测试,再编写代码。这是首要一条,不可动摇的一条,先写代码后写测试的都是假TDD。
    2021-05-05
  • Java自定义异常类详解及示例说明

    Java自定义异常类详解及示例说明

    本文详细讲述了Java中自定义异常类的原理、使用场景及创建方法,包括为何使用自定义异常、如何创建和实例化,以及文件处理、用户认证和业务逻辑中的应用示例,感兴趣的朋友跟随小编一起看看吧
    2025-10-10
  • Jenkins安装多个jdk版本并在项目中选择对应jdk版本

    Jenkins安装多个jdk版本并在项目中选择对应jdk版本

    在使用jenkins构建项目时会遇到不同的job需要配置不同版本的jdk,下面这篇文章主要给大家介绍了关于Jenkins安装多个jdk版本并在项目中选择对应jdk版本的相关资料,需要的朋友可以参考下
    2024-03-03
  • 从基础到实战全解析Java加载Properties文件的六种方式

    从基础到实战全解析Java加载Properties文件的六种方式

    本文详细介绍了Java中Properties文件的六种加载方式,每种方式都有其适用场景、实现步骤、优缺点及最佳实践,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2025-12-12
  • spring如何解决循环依赖问题

    spring如何解决循环依赖问题

    Spring在单例模式下用三级缓存设计解决setter方法注入bean属性循环依赖问题,但无法解决多例Bean和构造方法注入参数的循环依赖,三级缓存通过A、B两对象互相注入属性的过程解决循环依赖,其中,构造方法的循环依赖无法解决是因为创建对象会走构造方法
    2024-10-10
  • Java实现简易HashMap功能详解

    Java实现简易HashMap功能详解

    这篇文章主要介绍了Java实现简易HashMap功能,结合实例形式详细分析了Java实现HashMap功能相关原理、操作步骤与注意事项,需要的朋友可以参考下
    2020-05-05

最新评论