Spring | 整合mybatis和junit

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: Spring | 整合mybatis和junit

一、前言


这篇文章主要介绍如何使用spring整合mybatis和junit测试。

二、内容


1.spring整合mybatis


1.导入相关依赖


<!--        spring整合mybatis需要的依赖-->
        <!--        JDBC-->
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.24</version>
        </dependency>
        <!--        druid连接池-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>druid</artifactId>
            <version>1.2.0</version>
        </dependency>
        <!--        spring框架-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-context</artifactId>
            <version>5.2.10.RELEASE</version>
        </dependency>
        <!--        spring-jdbc-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-jdbc</artifactId>
            <version>5.3.4</version>
        </dependency>
<!--        mybatis-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis</artifactId>
            <version>3.5.6</version>
        </dependency>
<!--        mybatis提供给spring的接口-->
        <dependency>
            <groupId>org.mybatis</groupId>
            <artifactId>mybatis-spring</artifactId>
            <version>2.1.0</version>
        </dependency>


注意:

如果MySQL版本是5.x,需要将mysql-connector-java换成5.x版本,将spring-jdbc的版本也换成5.2.10.release。


2.准备工作

在这里分别准备好mapper层的UserMapper接口,service层的UserService接口和实现类


public interface UserMapper {
    /**
     * 通过id查找用户
     */
    @Select("SELECT * FROM user WHERE id = #{id}")
    User selectById(@Param("id") int id);
}
public interface UserService {
    User selectById(int id);
}
public class UserServiceImpl implements UserService {
    private UserMapper mapper;
    @Override
    public User selectById(int id) {
        User user = mapper.selectById(id);
        return user;
    }
}

3.新建SpringConfig类,并加上@Configuration和@ComponentScan注解

8a38609d42ce4daba8f534aeeb1e505e.png


4.编写数据库连接信息的jdbc.properties文件,并引入到SpringConfig类中

2be1ccb3923e4a7380cc753f7de5865c.png

20fcfe072fba4b03b8094dab0e21585a.png


5.新建JdbcConfig类,使用@Bean注入第三方数据源对象(Druid)


public class JdbcConfig {
    @Value("${driverClassName}")
    private String driverClassName;
    @Value("${url}")
    private String url;
    @Value("${name}")
    private String username;
    @Value("${password}")
    private String password;
    /**
     * 注入第三方bean
     */
    @Bean
    public DataSource getDataSource() {
        DruidDataSource dataSource = new DruidDataSource();
        dataSource.setDriverClassName(driverClassName);
        dataSource.setUrl(url);
        dataSource.setUsername(username);
        dataSource.setPassword(password);
        return dataSource;
    }
}


6.新建MybatisConfig类,编写SqlSessionFactoryBean对象方法和MapperScannerConfigurer对象方法,并加上@Bean注解。

818dc87c52cc42628bea87be0713fb63.png


c2938339473e4e3e883bb6cac8180b5f.png


public class MybatisConfig {
    @Bean
    public SqlSessionFactoryBean getSqlSessionFactoryBean(DataSource dataSource) {
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        factoryBean.setTypeAliasesPackage("demo6.bean"); // 实体类的类型别名
        factoryBean.setDataSource(dataSource); // 设置数据源,获取数据库配置信息(引用类型注入使用方法形参)
        return factoryBean;
    }
    @Bean
    public MapperScannerConfigurer getMapperScannerConfigurer() {
        MapperScannerConfigurer scannerConfigurer = new MapperScannerConfigurer();
        scannerConfigurer.setBasePackage("demo6.mapper"); // 设置哪些包下的类要生成代理(创建对象)
        return scannerConfigurer;
    }
}


7.在SpringConfig类中导入这两个配置类@Import

42a37e2ac5d241bc914125b56b7e7617.png


8.在UserServiceImpl类中为mapper对象注入,并加上@Service注解


1b0bfef4864b43a498ecec7aaa34c3b2.png

9.运行主类并查看运行结果,并与数据库数据对比

45d4994a00804adf83c4171929c3535b.png


运行结果:

234ed495e40644d8ad1e9ede4b6b0750.png


和数据库数据进行对比

728668e3c848483a9f8f5e1b0acd102b.png


由此可见,spring整合mybatis成功!


2.spring整合junit测试


1.导入junit测试和spring-test坐标


<!--        spring整合junit-->
<!--        1.导入Junit测试-->
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
<!--        2.导入spring-test-->
        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-test</artifactId>
            <version>5.2.10.RELEASE</version>
        </dependency>


2.编写测试类(使用@RunWith注解和@ContextConfiguration注解)

32b8fefd974e4f2f8e19ac12f7b98660.png

3.查看运行结果

3d266a2f758040559c27aede20f462b5.png

三、结语


这篇文章主要讲了如何使用spring去整合mybatis,使用JdbcConfig类和MybatisConfig类去替换掉mybatis-config.xml文件,并注入mapper对象;使用spring整合junit比较简单,只需要加入依赖,在测试类上加上相应的注解。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助 &nbsp; &nbsp; 相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
30天前
ssm(Spring+Spring mvc+mybatis)——updateDept.jsp
ssm(Spring+Spring mvc+mybatis)——updateDept.jsp
10 0
|
30天前
ssm(Spring+Spring mvc+mybatis)——showDept.jsp
ssm(Spring+Spring mvc+mybatis)——showDept.jsp
9 0
|
29天前
|
SQL Java 数据库连接
挺详细的spring+springmvc+mybatis配置整合|含源代码
挺详细的spring+springmvc+mybatis配置整合|含源代码
35 1
|
1月前
|
druid Java 数据库连接
Spring Boot3整合MyBatis Plus
Spring Boot3整合MyBatis Plus
39 1
|
22天前
|
敏捷开发 监控 前端开发
Spring+SpringMVC+Mybatis的分布式敏捷开发系统架构
Spring+SpringMVC+Mybatis的分布式敏捷开发系统架构
54 0
|
30天前
|
Java Windows Perl
mybatis+spring报错PropertyAccessException 1: org.springframework.beans.MethodInvocationException
mybatis+spring报错PropertyAccessException 1: org.springframework.beans.MethodInvocationException
8 0
|
30天前
ssm(Spring+Spring mvc+mybatis)Dao层实现类——DeptDaoImpl
ssm(Spring+Spring mvc+mybatis)Dao层实现类——DeptDaoImpl
12 0
|
30天前
ssm(Spring+Spring mvc+mybatis)Dao接口——IDeptDao
ssm(Spring+Spring mvc+mybatis)Dao接口——IDeptDao
8 0
|
30天前
ssm(Spring+Spring mvc+mybatis)实体类——Dept
ssm(Spring+Spring mvc+mybatis)实体类——Dept
11 0
|
30天前
|
Java 关系型数据库 MySQL
ssm(Spring+Spring mvc+mybatis)
ssm(Spring+Spring mvc+mybatis)
12 0