轉載請注明出處哈: http://carlosfu.iteye.com/blog/2238662
1. 整合思路
(1) SqlSessionFactory由Spring作為單例管理
(2) spring和mybatis整合生成代理對象,使用SqlSessionFactory建立SqlSession。
(3) 持久層mapper(dao)由spring管理
2. 依賴
(1)spring依賴
<spring.version>3.2.8.RELEASE</spring.version>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-tx</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-beans</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-expression</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context-support</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
</dependency>
(2)spring-mybatis依賴
<mybatis.spring.version>1.2.2</mybatis.spring.version>
<dependency>
<groupId>org.mybatis</groupId>
<artifactId>mybatis-spring</artifactId>
<version>${mybatis.spring.version}</version>
</dependency>
(3) c3p0
<c3p0.version>0.9.2</c3p0.version>
<dependency>
<groupId>com.mchange</groupId>
<artifactId>c3p0</artifactId>
<version>${c3p0.version}</version>
</dependency>
3. spring配置:(spring配置檔案放到classpath下spring目錄下)
(1)spring總配置
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"
default-autowire="byName">
<import resource="classpath:spring/spring-data.xml" />
<import resource="classpath:spring/spring-mybatis.xml" />
</beans>
(2)spring-data.xml配置:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.0.xsd" default-autowire="byName">
<context:property-placeholder location="classpath:db.properties"/>
<bean name="footballDB" class="com.mchange.v2.c3p0.ComboPooledDataSource">
<property name="driverClass" value="${football.driver}"/>
<property name="jdbcUrl" value="${football.url}"/>
<property name="user" value="${football.username}"/>
<property name="password" value="${football.password}"/>
<property name="initialPoolSize" value="10"/>
<property name="maxPoolSize" value="30"/>
<property name="testConnectionOnCheckin" value="false"/>
<property name="testConnectionOnCheckout" value="true"/>
</bean>
</beans>
(3)spring-mybatis配置:
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.0.xsd"
default-autowire="byName">
<bean id="mysqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="footballDB"/>
<!-- mybatis配置檔案的位置 -->
<property name="configLocation" value="classpath:mybatis-config.xml"/>
<!-- domain的包路徑,類似MyBatis的typeAliases配置 -->
<property name="typeAliasesPackage" value="com.sohu.tv.bean"/>
<!-- mapper配置檔案的路徑,類似MyBatis的mappers配置 -->
<property name="mapperLocations" value="classpath:mapper/*.xml"/>
</bean>
<!-- 掃描接口類的包路徑 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.sohu.tv.mapper"/>
</bean>
</beans>
(4)mybatis-config.xml配置:
<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<configuration>
<!--資料庫的字段名到pojo類的屬性名的自動映射-->
<settings>
<setting name="useColumnLabel" value="true"/>
<setting name="mapUnderscoreToCamelCase" value="true"/>
</settings>
</configuration>
(5)db.properties:
football.driver=com.mysql.jdbc.Driver
football.url=jdbc:mysql://localhost:3306/football
football.username=root
football.password=your password
4. 單元測試:
spring基類測試
package com.sohu.tv.spring;
import org.junit.Assert;
import org.junit.runner.RunWith;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
/**
* spring-mybatis基類測試
* @author leifu
* @Date 2015年1月12日
* @Time 下午2:34:21
*/
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration({"classpath:spring/spring.xml"})
public class MyBatisSpringBaseTest extends Assert {
protected final Logger logger = LoggerFactory.getLogger(this.getClass());
}
package com.sohu.tv.spring;
import java.util.List;
import javax.annotation.Resource;
import org.junit.Test;
import com.sohu.tv.bean.Club;
import com.sohu.tv.mapper.ClubDao;
/**
* spring-mybatis clubDao測試
*
* @author leifu
* @Date 2015年8月4日
* @Time 下午12:02:21
*/
public class MyBatisSpringClubTest extends MyBatisSpringBaseTest {
@Resource(name = "clubDao")
private ClubDao clubDao;
@Test
public void testGetAllClubs() {
List<Club> clubList = clubDao.getAllClubs();
if (clubList != null && !clubList.isEmpty()) {
System.out.println("clubList size: " + clubList.size());
for (Club club : clubList) {
System.out.println(club);
}
}
}
}