您的位置:首页 > 编程语言 > Java开发

2017.2.9 深入浅出MyBatis技术原理与实践-第八章 MyBatis-Spring(二)-----配置文件详解

2017-02-09 15:10 639 查看
[b]深入浅出MyBatis技术原理与实践-第八章 MyBatis-Spring(二) ------配置文件详解[/b]

8.2 MyBatis-Spring应用

8.2.1 概述

本文主要讲述通过注解配置MyBatis-Spring。

配置分为几个部分:

 配置数据源
配置SqlSessionFactory
配置SqlSessionTemplate
配置Mapper
事务处理


mybatis中,使用SqlSessionFactory来产生SqlSession。

mybatis-spring中,使用SqlSessionTemplate来完成,它封装了对SqlSession的操作。所以通过SqlSessionTemplate可以得到Mapper。

8.2.2 配置SqlSessionFactory

SqlSessionFactoryBean
1.dataSource
2.configLocation


配置示例如下:

<bean id="dataSource" class="...">
</bean>

<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
<property name="dataSource" ref="dataSource"/>
<property name="configLocation" value="classpath:mybatis.xml"/>
</bean>


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

(注意,因为Spring已经初始化了数据源,就是上面那个id为dataSource的bean,在mybatis的配置文件中就不需要再配置关于数据库的environments节点了。本来mybatis中,environments里配置了datasource和transactionManager等。)

<configuration>
<settings>...<settings>
<typeAliases>....<typeAliases>
<mappers>
<mapper resource="com\lyh\po\role.xml"/>
<mappers>
</configuration>


8.2.3 配置SqlSessionTemplate

有两种构建方法。

构建方法1:

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


构建方法2:

这里的第二个参数,是执行器类型ExecutorType,他是一个枚举类,有三个值可以选。

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


8.2.4 配置Mapper

<!-- 扫描basePackage下所有以@Repository标识的接口 -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.lyh.dao"/>
<property name="annotationClass" value="yorg.springframework.stereotype.Repository"/>
<!--显示指定template的名字
<property name="sqlSessionTemplateBeanName" value=""/>
-->
<!--指定实现了何种接口,就被认为是映射器mapper
<property name="markerInterface" value=""/>
-->
</bean>


注意,dao包下的类别忘记加上注解@Repository。

@Repository
 public interface UserDao{
....
}


8.2.5 配置事务

mybatis单独使用时,数据源DataSource和事务管理TransactionManager都是在environments节点下配置的。

mybatis-spring使用时,mybatis的配置文件mybatis.xml不需要再配置DataSource,正如前面所言,因为spring已经配置好了,以bean的形式。

而事务管理,mybatis-spring是使用Spring AOP去管理的。所以同样的,mybatis的配置文件[b]mybatis.xml不需要再配置TransactionManager[/b],而是以bean的形式配置如下:

Spring AOP分为声明式事务和编程式事务,一般使用前者。

<!-- 使用annotation定义事务,声明式 -->
<tx:annotation-driven transaction-manager="txManager"/>

<!-- 事务管理器, Jdbc单数据源事务 -->
<bean id="txManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
<property name="dataSource" ref="dataSource"/>
</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>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: