一、前言
这篇文章主要介绍如何使用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注解
4.编写数据库连接信息的jdbc.properties文件,并引入到SpringConfig类中
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注解。
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
8.在UserServiceImpl类中为mapper对象注入,并加上@Service注解
9.运行主类并查看运行结果,并与数据库数据对比
运行结果:
和数据库数据进行对比
由此可见,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注解)
3.查看运行结果
三、结语
这篇文章主要讲了如何使用spring去整合mybatis,使用JdbcConfig类和MybatisConfig类去替换掉mybatis-config.xml文件,并注入mapper对象;使用spring整合junit比较简单,只需要加入依赖,在测试类上加上相应的注解。