首先我本身簡單介紹一下mybatisspring
mybatis是在配置中寫SQL,用對象映射
mybatis看作是是數據持久層的框架,它主要是對數據庫和對象的關係進行操做sql
再說下:
mybatis和hibernate的最大區別在於,本身寫SQL,而hibernate自動映射SQL,mybatis更加靈活,更適用於二次開發,若是要涉及較多的數據庫結構的修改的話,hibernate更加有優點些數據庫
如今開始集成MyBatis-Springmybatis
(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"
"http://mybatis.org/dtd/mybatis-3-config.dtd">
<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集成的比較oracle
後續有不少開發填坑的文章發佈,若是對你有幫助,請支持和加關注一下app