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