java

关注公众号 jb51net

关闭
首页 > 软件编程 > java > SpringBoot 整合MyBatis、Junit5

SpringBoot 整合MyBatis、Junit5的实践过程

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

您可能感兴趣的文章:
阅读全文