zoukankan      html  css  js  c++  java
  • (五)mybatis-spring的集成

    mybatis-spring的集成

      源码下载(数据库使用derby,具体数据库结构参考这里

      在src下新建applicationContext.xml

      配置内容:数据源、SqlSessionFactory、Mapper、事务处理

    一、配置SqlSessionFactory

      需要两个参数:数据源和Mybatis的配置文件路径

      这样SpringIOC容器就会初始化这个SqlSessionFactoryBean,解析Mybatis配置文件连同数据源一同保存在SpringBean里

     1    <!-- 配置数据源 -->
     2     <context:property-placeholder location="classpath:jdbc.properties"/>
     3     <bean id="dataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
     4         <property name="driverClassName" value="${driver}"/>
     5         <property name="url" value="${url}"/>
     6     </bean>
     7     
     8     <!-- 配置SQLSessionFactory -->
     9     <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
    10         <property name="dataSource" ref="dataSource"/>  
    11         <property name="configLocation" value="classpath:mybatis-config.xml"/> 
    12     </bean>

      jdbc.properties

    driver=org.apache.derby.jdbc.ClientDriver
    url=jdbc:derby://localhost:1527/E:/my/derby/mydb

      在spring中已经初始化数据源,所以在mybatis配置文件中就无需再进行配置

      mybatis.xml

     1 <?xml version="1.0" encoding="UTF-8"?>
     2 <!DOCTYPE configuration
     3   PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
     4   "http://mybatis.org/dtd/mybatis-3-config.dtd">
     5   <configuration>
     6       <settings>
     7           <!-- 开启延迟加载 -->
     8           <setting name="lazyLoadingEnabled" value="true"/>
     9           <!-- 每种属性按需加载 -->
    10           <setting name="aggressiveLazyLoading" value="false"/>
    11       </settings>
    12   </configuration>

      有些书中介绍了配置SqlSessionTemplate,当同时设置了SqlSessionFactory和SqlSessionTemplate,系统就会用SqlSessionTemplate覆盖掉SqlSessionFactory,相比较而言,笔者还是喜欢采用Mapper接口的编程方式。

    二、配置mapper(这里采用自动扫描的形式)

      采用MapperScannerConfigurer配置,属性:

        basePackage:指定让Spring自动扫描的包

        annotationClass:表示如果类被这个注解标识的时候才进行扫描

        sqlSessionFactoryBeanName:指定在spring中定义sqlSessionFactory的bean名称。如果被定义,sqlSessionFactory将不起作用

        sqlSessionTemplateBeanName:指定在spring中定义sqlSessionTemplate的bean名称。如果被定义,sqlSessionFactoryBeanName将不起作用

        markerInterface:指定是实现了什么接口就认为它是mapper

     1 <!-- 接口方式 -->
     2     <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
     3         <property name="basePackage" value="com.example.dao"></property>
     4         <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
     5     </bean> 
     6 //在sqlSessionFactory中加载映射文件
     7 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
     8         <property name="dataSource" ref="dataSource"/>  
     9         <property name="configLocation" value="classpath:mybatis-config.xml"></property> 
    10         <!-- 加载映射文件 -->
    11         <property name="mapperLocations" value="classpath*:/com/example/mapper/*Mapper.xml"></property>  
    12     </bean>

    三、配置事务

    1    <!--  配置jdbc事务管理器,完成数据的完整性和一致性 -->
    2     <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
    3         <property name="dataSource" ref="dataSource"></property>
    4     </bean>
    5     <!--  使用声明式事务管理方式     -->
    6     <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>

      配置service层

        <!-- 启动spring注解 -->
        <context:annotation-config/>
        <!-- 扫描注解所在的包 -->
        <context:component-scan base-package="com.example"/>

      在service业务层中使用@Transaction注解便可开启事务,事务使用见上篇

    附:别人写的SqlSessionFactoryBean

    -------end-------

  • 相关阅读:
    POJ3320 Jessica's Reading Problem
    POJ3320 Jessica's Reading Problem
    CodeForces 813B The Golden Age
    CodeForces 813B The Golden Age
    An impassioned circulation of affection CodeForces
    An impassioned circulation of affection CodeForces
    Codeforces Round #444 (Div. 2) B. Cubes for Masha
    2013=7=21 进制转换
    2013=7=15
    2013=7=14
  • 原文地址:https://www.cnblogs.com/zuzZ/p/8107912.html
Copyright © 2011-2022 走看看