spring中整合使用mybatis的用法總結
一:在Spring配置Mybatis
第一步:將mybatis-spring類包添加 到項目的類庫中
第二步:編寫spring和持久層銜接的xml文件,這裏起名爲spring-dao.xml
<!-- 3:配置SqlSessionFactory對象 -->
<bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> ①
<!-- 注入數據庫連接池 -->
<property name="dataSource" ref="dataSource"/>
<!-- 配置MyBatis全局配置文件:mybatis-config.xml -->
<property name="configLocation" value="classpath:mybatis-config.xml"/>②
<!-- 掃描entity包 使用別名 -->
<property name="typeAliasesPackage" value=""/>
<!-- 掃描sql配置文件:mapper需要的xml文件 -->
<property name="mapperLocations" value="classpath:mapper/*.xml"/> ③
</bean>
mybatis-spring 類包提供了SqlSessionFactoryBean,以便通過Spring風格創建mybatis的SqlSessionFactory,如①所示。只需要注入數據源並指定mybatis的總配置文件就可以了,如②所示。 mapperLocations屬性支持掃描式加載sql映射文件。
二:編寫myBatis中的dao
第一種方法:使用SqlSessionTemplate模板類
mybatis-spring效仿spring的風格提供了一個模板類SqlSessionTemplate,可以通過模板類輕鬆訪問數據庫
但是這種方法使用字符串指定映射項,容易引起錯誤,因爲字符串本身沒有語義性,如果存在編寫錯誤,編譯器無法識別,只能在運行期發現。
第二種方法:使用映射接口
接口的名稱和映射命名空間相同,接口方法和映射基的id相同
第一步:在spring-dao.xml中添加配置
<!-- 4:配置掃描Dao接口包,動態實現Dao接口,注入到spring容器中-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!-- 注入sqlSessionFactory -->
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
<!-- 給出需要掃描Dao接口包 -->
<property name="basePackage" value=""/>
</bean>
MapperScannerConfigurer將掃描basePackage所指定的包下的所有的接口類(包括子包),如果它們在sql映射文件中定義過,則將它們動態定義爲Spring Bean,這樣我們就可以在Service中直接注入映射接口的bean了。