zoukankan      html  css  js  c++  java
  • mybatis-spring 项目简介

    mybatis-spring 主要是为了解决 spring3.0 中支持 mybatis3.0

    1 mybatis-spring 主要包含以下几个部分

    • 数据源
    • SqlSessionFactory
    • SqlSessionTemplate
    • Mapper
    • 事务处理

    在mybatis中构建 SqlSessionFactory 对象,让它来产生 SqlSession, 在 mybatis-spring 项目中 SqlSession 是通过SqlSessionTemplate 来实现的,它提供了对SqlSession 的封装。

    所以通过 SqlSessionTemplate 可以得到 Mapper。

    2 构建 SqlSessionFactory ,它的作用是生成 SqlSession 。一般地,只需配置两个参数 1)数据源 2)mybatis 配置文件路径

    3 配置 SqlSessionTemplate ,是一个模板类,通过调用 SqlSession 来完成工作,所以在 mybatis-spring 项目中,它是一个核心类。

    构建方法有两种

    1)只有一个参数 SqlSessionFactory 

    2)两个参数 一个是 SqlSessionFactory 另一个是执行器类型。

    方法一,代码如下

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

    方法二,两个参数

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

    ExecutorType 的取值范围是:SIMPLE/REUSE/BATCH

    如果同时设置了SqlSessionFactory 和 SqlSessionTemplate ,系统会使 SqlSessionTemplate 覆盖掉 SqlSessionFactory 。

    4 配置 Mapper ,大部分场景中不建议使用 SqlSessionFactory 和 SqlSessionTemplate。而采用Mapper 接口编程的方式。关键类:MapperFactoryBean

    在 mybatis 中,Mapper只是一个接口,而不是一个实现类。它是由 mybatis 通过动态代理的形式生成代理对象去运行,spring 没有办法生成实现类。

    mybatis-spring 提供了 MapperFactoryBean 作为中介,可以配置他来获得我们需要的 Mapper。配置 MapperFactoryBean 有3个参数 MapperInterface,SqlSessionFactory,SqlSessionTemplate

    • MapperInterface,用来定制接口,当我们的接口继承了配置的接口,那么 Mybatis 就认为他是一个Mapper
    • SqlSessionFactory,当 SqlSessionTemplate 没有配置的时候,mybatis-spring 才会去设置它
    • SqlSessionTemplate,当被设置的时候,SqlSessionFactory 失效。

    4.2 使用扫描的方式配置Mapper,关键类:MapperScannerConfigurer,他的可配属性

    • basePackage,spring自动扫描的包,会自动扫描子包
    • annotationClass,表示类只有被这个注解标注才进行扫描
    • sqlSessionFactoryBeanName,指定spring 中定义 sqlSessionFactory bean名称。如果被定义,sqlSessionFactory 将不起作用。
    • sqlSessionTemplateBeanName,指定spring 中定义 sqlSessionTemplate bean名称。如果被定义,sqlSessionFactoryBeanName 将不起作用。
    • markerInterface,指定实现了什么接口就认为是 Mapper。

    注 意 , 没 有 必 要 去 指 定 SqlSessionFactory 或 SqlSessionTemplate , 因 为 MapperScannerConfigurer 将会创建 MapperFactoryBean,之后自动装配。但是,如果你使 用了一个 以上的 DataSource ,那 么自动 装配可 能会失效 。这种 情况下 ,你可 以使用 sqlSessionFactoryBeanName 或 sqlSessionTemplateBeanName 属性来设置正确的 bean 名 称来使用。这就是它如何来配置的,注意 bean 的名称是必须的,而不是 bean 的引用,因 此,value 属性在这里替代通常的 ref 。

    5 配置事务,spring 和 mybatis结合后,是使用Spring AOP 去管理事务的。配置也很简单。

    <!-- 支持注解 -->
    <context:annotation-config/>
    
    <!-- 事务管理器 -->
    <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
            <property name="dataSource" ref="dataSource"/>
        </bean>
    
    <!-- 声明式事务 -->
    <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>
  • 相关阅读:
    sync 解释
    USB枚举详细过程剖析(转)
    内核早期内存分配器:memblock
    LTE:eMBMS架构
    对linux内核中jiffies+Hz表示一秒钟的理解
    android的USB MTP && USB CDC/USBnet(ECM, NCM, ACM) && USB gardget
    Install Shield中调用devcon自动安装硬件驱动程序
    利用 devcon.exe实现自动安装驱动(转)
    linux系统IO调度算法
    ZooKeeper原理详解及常用操作
  • 原文地址:https://www.cnblogs.com/zhaopengcheng/p/7151946.html
Copyright © 2011-2022 走看看