spring集成Mybatis框架,junit测试

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了spring集成Mybatis框架,junit测试相关的知识,希望对你有一定的参考价值。

1、Spring的xml文件配置如下:

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <beans xmlns="http://www.springframework.org/schema/beans"
 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4     xmlns:aop="http://www.springframework.org/schema/aop"
 5     xmlns:tx="http://www.springframework.org/schema/tx"
 6     xmlns:context="http://www.springframework.org/schema/context"
 7     xsi:schemaLocation="
 8     http://www.springframework.org/schema/beans
 9     http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
10     http://www.springframework.org/schema/tx 
11     http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
12     http://www.springframework.org/schema/context
13     http://www.springframework.org/schema/context/spring-context.xsd
14     http://www.springframework.org/schema/aop 
15     http://www.springframework.org/schema/aop/spring-aop-3.1.xsd    
16     ">
17     
18     <!--1、 读取propertiser配置文件 -->
19     <context:property-placeholder location="classpath:jdbc.properties"/>
20     <!--2、 JNDI获取数据源(使用dbcp连接池) -->
21      <!-- 当srping容器停止销毁的时候要触发close关闭连接池 ,单例模式-->
22     <bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource" 
23            destroy-method="close" scope="singleton">
24         <property name="driverClassName" value="${driver}"/>
25         <property name="url" value="${url}"/>
26         <property name="username" value="${jdbc.username}"/>        
27         <property name="password" value="${password}"/>
28         
29     </bean>
30     
31     <!-- 事物管理  采用srping-jdbc的事物管理-->
32     <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
33         <property name="dataSource" ref="dataSource"/>
34     </bean>
35     
36     <!-- 配置mybatis 的sqlsessionFactory -->
37     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
38         <property name="dataSource"  ref="dataSource"/>
39         <property name="configLocation" value="classpath:mybatis-config.xml"/><!-- 引入mybits的配置文件 -->
40         <property name="mapperLocations" value="classpath:com/bdqn/dao/*.xml"/><!-- 引入xml的mapper文件 -->
41     </bean>
42     
43     <!-- 配置mybatis的 sqlsessionTemplate -->
44     <bean id="sqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
45         <constructor-arg name="sqlSessionFactory" ref="sqlSessionFactory"/><!-- 使用构造注入sqlSessionFactory,获得SqlSessionTemplate -->
46     </bean>
47     
48     <!-- 把SqlSessionTemplate注入到测试类,测试类就可以使用SqlSessionTemplate了 -->
49     <bean id="employeeTest" class="com.bdqn.test.EmployeeTest">
50         <property name="sqlSessionTemplate" ref="sqlSessionTemplate"/>
51     
52     </bean>
53     </beans>

2、Mybatis的xml配置文件如下:

 1 <?xml version="1.0" encoding="UTF-8" ?>
 2 <!DOCTYPE configuration
 3 PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
 4 "http://mybatis.org/dtd/mybatis-3-config.dtd">
 5 <configuration>
 6     <typeAliases>
 7         <package name="com.bdqn.po"/><!-- 整个po包里面的类都设自己类名为别名 -->
 8     </typeAliases>
 9 
10 </configuration>

3、由于mybatis的sql语句是写在xml文件里面的,本次采用的是数据源连接池。所以在spring的xml文件中先引入测试类:

<bean id="employeeTest" class="com.bdqn.test.EmployeeTest">

用juit测试sql时,再把spring的xml文件一次性load到上下文:ApplicationContext中,

再通过ApplicationContext.getBean("employeeTest") 拿到测试类,就可以在整个spring容器依赖关系中操作了。拿到测试类,调用sqlsession模板:

sqlSessionTemplate  ,运用模板的各种增删查改方法,代码如下:
 1 package com.bdqn.test;
 2 
 3 
 4 import java.util.List;
 5 
 6 import org.apache.log4j.Logger;
 7 import org.junit.Test;
 8 import org.mybatis.spring.SqlSessionTemplate;
 9 import org.springframework.context.ApplicationContext;
10 import org.springframework.context.support.ClassPathXmlApplicationContext;
11 
12 import com.bdqn.po.Employee;
13 
14 public class EmployeeTest {
15     private Logger logger = Logger.getLogger(EmployeeTest.class);
16     
17     private SqlSessionTemplate sqlSessionTemplate;
18     protected ApplicationContext aplcation = null; //注意引包
19     private EmployeeTest test;
20     
21     
22     @Test
23     public void getEmployeeList() {
24         aplcation =    new ClassPathXmlApplicationContext("applicationContext-spring.xml");//初始化上下文;
25         test = (EmployeeTest) aplcation.getBean("employeeTest");
26         
27         List<Employee> list = test.getSqlSessionTemplate().selectList("com.bdqn.dao.EmployeeMapper.getEmployeeList");
28         logger.debug("Employee-----"+list.size());
29     
30     
31     }
32 
33 
34     public SqlSessionTemplate getSqlSessionTemplate() {
35         return sqlSessionTemplate;
36     }
37     public void setSqlSessionTemplate(SqlSessionTemplate sqlSessionTemplate) {
38         this.sqlSessionTemplate = sqlSessionTemplate;
39     }
40 
41     
42     
43 }

 备注:

运行时报了个数据库连接错误:

Access denied for user ‘Administrator‘@‘localhost‘ (using password: YES)

找了很久都找不到原因,用户名,密码,驱动等绝对是没有错的,后来在xml文件中直接写入值就没有问题,就知道问题出在这个properties文件了,一个一个改了测试,发现是这个:username=root上,只要改一下这个username就好了,百度查了说是可能在引入时跟别的username重名了。---浪费了一晚上的时间!!!谨记!!!

driver=com.mysql.jdbc.Driver
url=jdbc:mysql://127.0.0.1:3306/testdb
username=root
password=123456




以上是关于spring集成Mybatis框架,junit测试的主要内容,如果未能解决你的问题,请参考以下文章

Spring 集成框架中 ResponseEntity<?> 的 Junit Mockito 测试用例

Java之Spring Boot入门到精通IDEA版SpringBoot整合其他框架Junit,Redis,MyBatis(一篇文章精通系列)中

MyBatis和SpringMVC集成事务在Junit测试下有效但是在实际项目无效的问题

junit测试mybatis框架时的几个报错。

spring boot集成mybatis需要的相关依赖

spring mvc mybatis 整合 大体步骤