2017.2.9 深刻淺出MyBatis技術原理與實踐-第八章 MyBatis-Spring(二)-----配置文件詳解

深刻淺出MyBatis技術原理與實踐-第八章 MyBatis-Spring(二) ------配置文件詳解spring

8.2 MyBatis-Spring應用

8.2.1 概述

本文主要講述經過註解配置MyBatis-Spring。sql

配置分爲幾個部分:數據庫

1 配置數據源 2 配置SqlSessionFactory 3 配置SqlSessionTemplate 4 配置Mapper 5 事務處理

mybatis中,使用SqlSessionFactory來產生SqlSession。編程

mybatis-spring中,使用SqlSessionTemplate來完成,它封裝了對SqlSession的操做。因此經過SqlSessionTemplate能夠獲得Mapper。mybatis

8.2.2 配置SqlSessionFactory

SqlSessionFactoryBean
1.dataSource
2.configLocation

配置示例以下:app

1 <bean id="dataSource" class="...">
2 </bean>
3 
4 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
5     <property name="dataSource" ref="dataSource"/>
6     <property name="configLocation" value="classpath:mybatis.xml"/>
7 </bean>

 

其中配置文件mybatis.xml的配置示例以下:spa

(注意,由於Spring已經初始化了數據源,就是上面那個id爲dataSource的bean,在mybatis的配置文件中就不須要再配置關於數據庫的environments節點了。原本mybatis中,environments裏配置了datasource和transactionManager等。)code

1 <configuration>
2     <settings>...<settings>
3     <typeAliases>....<typeAliases>
4     <mappers>
5         <mapper resource="com\lyh\po\role.xml"/>
6     <mappers>
7 </configuration>

 

8.2.3 配置SqlSessionTemplate

有兩種構建方法。xml

構建方法1:blog

1 <bean id="SqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
2     <constructor-arg index="0" ref="sqlSessionFactory">
3 </bean>

構建方法2:

這裏的第二個參數,是執行器類型ExecutorType,他是一個枚舉類,有三個值能夠選。

1 <bean id="SqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
2     <constructor-arg index="0" ref="sqlSessionFactory">
3     <constructor-arg name="1" value="BATCH/SIMPLE/REUSE">
4 </bean>

 

8.2.4 配置Mapper

 1 <!-- 掃描basePackage下全部以@Repository標識的接口 -->
 2 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
 3     <property name="basePackage" value="com.lyh.dao"/>
 4     <property name="annotationClass" value="yorg.springframework.stereotype.Repository"/>
 5     <!--顯示指定template的名字
 6     <property name="sqlSessionTemplateBeanName" value=""/>
 7     -->
 8     <!--指定實現了何種接口,就被認爲是映射器mapper
 9     <property name="markerInterface" value=""/>
10     -->
11 </bean>        

注意,dao包下的類別忘記加上註解@Repository。

1 @Repository 2 public interface UserDao{
3    ....
4 }

 

8.2.5 配置事務

mybatis單獨使用時,數據源DataSource和事務管理TransactionManager都是在environments節點下配置的。

mybatis-spring使用時,mybatis的配置文件mybatis.xml不須要再配置DataSource,正如前面所言,由於spring已經配置好了,以bean的形式。

而事務管理,mybatis-spring是使用Spring AOP去管理的。因此一樣的,mybatis的配置文件mybatis.xml不須要再配置TransactionManager,而是以bean的形式配置以下:

Spring AOP分爲聲明式事務和編程式事務,通常使用前者。

1 <!-- 使用annotation定義事務,聲明式 -->
2 <tx:annotation-driven transaction-manager="txManager"/>
3 
4 <!-- 事務管理器, Jdbc單數據源事務 -->
5 <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
6     <property name="dataSource" ref="dataSource"/>
7 </bean>

 

到此配置就結束了。

彙總一下,一共有兩個文件,mybatis-spring.xml和mybatis.xml。

(1)mybatis-spring.xml

 
1 配置數據源
2 配置SqlSessionFactory
3 配置SqlSessionTemplate
4 配置Mapper
5 事務處理
1 <bean id="dataSource" class="...">
2 </bean>
3 
4 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
5     <property name="dataSource" ref="dataSource"/>
6     <property name="configLocation" value="classpath:sqlMapConfig.xml"/>
7 </bean>

1 <bean id="SqlSessionTemplate" class="org.mybatis.spring.SqlSessionTemplate">
2     <constructor-arg index="0" ref="sqlSessionFactory">
3 </bean>

 1 <!-- 掃描basePackage下全部以@Repository標識的接口 -->
 2 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
 3     <property name="basePackage" value="com.lyh.dao"/>
 4     <property name="annotationClass" value="yorg.springframework.stereotype.Repository"/>
 5     <!--顯示指定template的名字
 6     <property name="sqlSessionTemplateBeanName" value=""/>
 7     -->
 8     <!--指定實現了何種接口,就被認爲是映射器mapper
 9     <property name="markerInterface" value=""/>
10     -->
11 </bean>   

1 <!-- 使用annotation定義事務,聲明式 -->
2 <tx:annotation-driven transaction-manager="txManager"/>
3 
4 <!-- 事務管理器, Jdbc單數據源事務 -->
5 <bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
6     <property name="dataSource" ref="dataSource"/>
7 </bean>

 

(2)mybatis.xml

1 <configuration>
2     <settings>...<settings>
3     <typeAliases>....<typeAliases>
4     <mappers>
5         <mapper resource="com\lyh\po\role.xml"/>
6     <mappers>
7 </configuration>
相關文章
相關標籤/搜索