zoukankan      html  css  js  c++  java
  • 2017.2.9 深入浅出MyBatis技术原理与实践-第八章 MyBatis-Spring(二)-----配置文件详解

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

    8.2 MyBatis-Spring应用

    8.2.1 概述

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

    配置分为几个部分:

    1 配置数据源
    2 配置SqlSessionFactory
    3 配置SqlSessionTemplate
    4 配置Mapper
    5 事务处理

    mybatis中,使用SqlSessionFactory来产生SqlSession。

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

    8.2.2 配置SqlSessionFactory

    SqlSessionFactoryBean
    1.dataSource
    2.configLocation

    配置示例如下:

    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的配置示例如下:

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

    1 <configuration>
    2     <settings>...<settings>
    3     <typeAliases>....<typeAliases>
    4     <mappers>
    5         <mapper resource="comlyhpo
    ole.xml"/>
    6     <mappers>
    7 </configuration>

    8.2.3 配置SqlSessionTemplate

    有两种构建方法。

    构建方法1:

    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="comlyhpo
    ole.xml"/>
    6     <mappers>
    7 </configuration>
  • 相关阅读:
    php防止刷流量攻击
    PHP序列化变量的4种方法
    php递归操作目录 递归对参数转义
    php 图像裁剪(自定义裁剪图片大小)
    jquery实现点击文字后变成文本框且可修改
    mysql查看表注释和字段注释的方法
    php 获取中文字符串首字母
    Nginx.conf配置
    光盘作为yum源
    win7下安装mongodb
  • 原文地址:https://www.cnblogs.com/lyh421/p/6382242.html
Copyright © 2011-2022 走看看