1. 程式人生 > >(五)mybatis-spring的集成

(五)mybatis-spring的集成

setting bsp left gre body href ref 不起作用 pack

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註解便可開啟事務,事務使用見上篇

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

(五)mybatis-spring的集成