目录
1、首先需要导入坐标
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.1.9.RELEASE</version>
</dependency>
<!--此处需要注意的是,spring5 及以上版本要求 junit 的版本必须是 4.12 及以上-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>5.1.9.RELEASE</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>1.3.0</version>
</dependency>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis</artifactId>
<version>3.5.3</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>5.1.9.RELEASE</version>
</dependency>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>druid</artifactId>
<version>1.1.16</version>
</dependency>
2、使用三层架构

service层和dao层的代码

需要注意的是: Service层中调用Dao层的接口需要使用@Autowired 自动获取
3、注解配置第三方资源
1、jdbc的配置
/**
* 加载druid资源
* <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
* <property name="driverClassName" value="${jdbc.driver}"/>
* <property name="url" value="${jdbc.url}"/>
* <property name="username" value="${jdbc.username}"/>
* <property name="password" value="${jdbc.password}"/>
* </bean>
*/
public class JDBCConfig {
@Value("${jdbc.driver}")
private String driver;
@Value("${jdbc.url}")
private String url;
@Value("${jdbc.username}")
private String username;
@Value("${jdbc.password}")
private String password;
@Bean("dataSource")
public DataSource getDataSource(){
DruidDataSource dataSource = new DruidDataSource();
dataSource.setDriverClassName(driver);
dataSource.setUrl(url);
dataSource.setUsername(username);
dataSource.setPassword(password);
return dataSource;
}
}
2、mybais的配置
public class MyBatisConfig {
/* spring整合mybatis后控制的创建连接用的对象
<bean class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="typeAliasesPackage" value="com.itheima.domain"/>
</bean>*/
//@Autowired 自动获取jdbc中的 dataSource
@Bean
public SqlSessionFactoryBean getSqlSessionFactoryBean(@Autowired DataSource dataSource){
SqlSessionFactoryBean ssfb = new SqlSessionFactoryBean();
ssfb.setTypeAliasesPackage("com.jing.domain");
ssfb.setDataSource(dataSource);
return ssfb;
}
/* 加载mybatis映射配置的扫描,将其作为spring的bean进行管理
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.itheima.dao"/>
</bean>*/
@Bean
public MapperScannerConfigurer getMapperScannerConfigurer(){
MapperScannerConfigurer msc = new MapperScannerConfigurer();
msc.setBasePackage("com.jing.dao");
return msc;
}
}
3、SpringConfig的配置
@Configuration
@ComponentScan("com.jing")
@PropertySource("classpath:jdbc.properties")
@Import({JDBCConfig.class,MyBatisConfig.class})
public class SpringConfig {
}
最后,可以直接使用junit进行测试啦
Spring集成Junit步骤
①导入spring集成Junit的坐标
②使用@Runwith注解替换原来的运行期
③使用@ContextConfiguration指定配置文件或配置类
④使用@Autowired注入需要测试的对象
⑤创建测试方法进行测试
//设置Spring专用的类加载器
@RunWith(SpringJUnit4ClassRunner.class)
//设定加载的Spring上下文对应的配置
public class UserTest {
@Autowired
private UserService userService;
@Test
public void test01(){
int size = userService.findAll().size();
Assert.assertEquals(8,size);
}
}
注意
1.如果使用注解配置, @ContextConfiguration 应该指定配置类的字节码 --- 全注解
@ContextConfiguration(classes = SpringConfig.class)
2.如果使用配置文件,@ContextConfiguration 应该指定配置文件的位置 xml方式
@ContextConfiguration(locations = "classpath:beans.xml")
使用spring 5.x版本的时候,要求junit的jar必须是4.12及以上 (建议junit的4.12 和 spring的5.0.x匹配)
原始Junit测试Spring的问题
在测试类中,每个测试方法都有以下两行代码

这两行代码的作用是获取容器,如果不写的话,直接会提示空指针异常。所以又不能轻易删掉。
上述问题解决思路
让SpringJunit负责创建Spring容器,但是需要将配置文件的名称告诉它
将需要进行测试Bean直接在测试类中进行注入
这篇教程详细介绍了如何在Spring项目中整合Mybatis和JDBC,包括导入坐标、采用三层架构、注解配置第三方资源,以及使用JUnit进行测试的步骤。在Service层调用Dao层接口时,需使用@Autowired注解。最后提到了Spring 5.x版本对JUnit的要求,并解决了原始Junit测试Spring时遇到的问题。


被折叠的 条评论
为什么被折叠?



