MyBatis-Spring集成的理解

jopen 11年前發布 | 56K 次閱讀 MyBatis JEE框架

首先我自己簡單介紹一下mybatis

mybatis是在配置中寫SQL,用對象映射
mybatis看做是是數據持久層的框架,它主要是對數據庫和對象的關系進行操作

再說下:
mybatis和hibernate的最大區別在于,自己寫SQL,而hibernate自動映射SQL,mybatis更加靈活,更適用于二次開發,如果要涉及較多的數據庫結構的修改的話,hibernate更加有優勢些

現在開始集成MyBatis-Spring

(1)要使用MyBatis-Spring的模塊的,首先要下載mybatis-spring.jar包,導入Mybatis相關的包。并且在Maven中pom.xml加入加入依賴關系
(2)在spring框架的應用上下文配置文件applicationContext.xml中定義SqlSessionFactory和至少一個數據映射類


如下在MyBatis-Spring中,SqlSessionFactorBean 用于創建SqlSessionFactory
這是我的項目配置:


 <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        
        <property name="dataSource" ref="dataSource"/>
        <property name="configLocation" value="classpath:mybatis/mybatis-config.xml"/>
        <!-- mapper和resultmap配置路徑 -->
        <property name="mapperLocations">
            <list>
               
                <value>classpath:com/xmoney/*/-oracle-mapper.xml</value>
            </list>
        </property>
    </bean>


其中數據源dataSource可以是任何的數據庫,屬性configLocation用來指定Mybatis的XML文件配置的路徑
屬性mapperLocations中list用來指定mybatis的XML的映射文件,比如項目中每個模塊的xml(用來操作數據庫的Sql語句)
(3)MyBatis的自動配置

沒有必要為Spring的所有的XML文件注冊所有的映射器,可以使用MapperScannerConfigurer,它將查找類路徑下的映射器,并且將他們自動創建成MapperFactoryBeans


這是在applicationContext.xml中的配置:

 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.xmoney"/>
        <property name="markerInterface" value="com.xmoney.manage.entity.Mapper"/>
    </bean>
其中屬性basePackage會讓接口文件映射問基本包路徑


這里要注意一點:如果你使用了一個以上的DataSource,也就是多個SqlSessionFactory,那么自動裝配就會不起作用
此時可以將sqlSessionFactory換成sqlSessionFactoryBeanName或者sqlSessionTemplateBeanName


屬性markerInterface指定要尋找的父接口


其中MyBatis的配置XML 如下


<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE configuration
    PUBLIC "-//mybatis.org//DTD Config 3.0//EN"
    ";


<configuration>
<settings>
<!-- changes from the defaults -->
<setting name="lazyLoadingEnabled" value="false" />
</settings>
<typeAliases>
   <typeAlias alias="Hnyhb" type="com.xmoney.manage.entity.Hnyhb" />
   <typeAlias alias="Page" type="com.xmoney.manage.entity.Page" />
</typeAliases>


</configuration>


這里有兩個配置,一個是LazyLoadingEnable,設為false,讓Mybatis禁止Lazy加載
在TypeAliases,這是一個別名,之所以要別名,是為了在Mapper映射的時候方便使用


以上是我對Mybatis和spring集成的配置,以及和hibernate與spring集成的比較

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!