mybatis-spring 项目简介
mybatis-spring 主要是為了解決 spring3.0 中支持 mybatis3.0
1 mybatis-spring 主要包含以下幾個部分
- 數據源
- SqlSessionFactory
- SqlSessionTemplate
- Mapper
- 事務處理
在mybatis中構建 SqlSessionFactory 對象,讓它來產生 SqlSession, 在?mybatis-spring 項目中?SqlSession 是通過SqlSessionTemplate 來實現的,它提供了對SqlSession 的封裝。
所以通過?SqlSessionTemplate 可以得到 Mapper。
?
2 構建?SqlSessionFactory ,它的作用是生成?SqlSession 。一般地,只需配置兩個參數 1)數據源 2)mybatis 配置文件路徑
?
3 配置 SqlSessionTemplate ,是一個模板類,通過調用 SqlSession 來完成工作,所以在?mybatis-spring 項目中,它是一個核心類。
構建方法有兩種
1)只有一個參數?SqlSessionFactory?
2)兩個參數 一個是?SqlSessionFactory 另一個是執行器類型。
方法一,代碼如下
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"><constructor-arg index="0" ref="sqlSessionFactory"/></bean>方法二,兩個參數
<bean id="sqlSession" class="org.mybatis.spring.SqlSessionTemplate"><constructor-arg index="0" ref="sqlSessionFactory"/><constructor-arg index="1" value="BATCH"/></bean>ExecutorType 的取值范圍是:SIMPLE/REUSE/BATCH
如果同時設置了SqlSessionFactory 和?SqlSessionTemplate ,系統會使?SqlSessionTemplate 覆蓋掉?SqlSessionFactory 。
?
4 配置 Mapper ,大部分場景中不建議使用?SqlSessionFactory 和?SqlSessionTemplate。而采用Mapper 接口編程的方式。關鍵類:MapperFactoryBean
在 mybatis 中,Mapper只是一個接口,而不是一個實現類。它是由 mybatis 通過動態代理的形式生成代理對象去運行,spring 沒有辦法生成實現類。
mybatis-spring 提供了 MapperFactoryBean 作為中介,可以配置他來獲得我們需要的 Mapper。配置?MapperFactoryBean 有3個參數 MapperInterface,SqlSessionFactory,SqlSessionTemplate
- MapperInterface,用來定制接口,當我們的接口繼承了配置的接口,那么 Mybatis 就認為他是一個Mapper
- SqlSessionFactory,當?SqlSessionTemplate 沒有配置的時候,mybatis-spring 才會去設置它
- SqlSessionTemplate,當被設置的時候,SqlSessionFactory 失效。
?
4.2 使用掃描的方式配置Mapper,關鍵類:MapperScannerConfigurer,他的可配屬性
- basePackage,spring自動掃描的包,會自動掃描子包
- annotationClass,表示類只有被這個注解標注才進行掃描
- sqlSessionFactoryBeanName,指定spring 中定義 sqlSessionFactory bean名稱。如果被定義,sqlSessionFactory 將不起作用。
- sqlSessionTemplateBeanName,指定spring 中定義 sqlSessionTemplate bean名稱。如果被定義,sqlSessionFactoryBeanName 將不起作用。
- markerInterface,指定實現了什么接口就認為是 Mapper。
注 意 , 沒 有 必 要 去 指 定 SqlSessionFactory 或 SqlSessionTemplate , 因 為 MapperScannerConfigurer 將會創建 MapperFactoryBean,之后自動裝配。但是,如果你使 用了一個 以上的 DataSource ,那 么自動 裝配可 能會失效 。這種 情況下 ,你可 以使用 sqlSessionFactoryBeanName 或 sqlSessionTemplateBeanName 屬性來設置正確的 bean 名 稱來使用。這就是它如何來配置的,注意 bean 的名稱是必須的,而不是 bean 的引用,因 此,value 屬性在這里替代通常的 ref?。
?
5 配置事務,spring 和 mybatis結合后,是使用Spring AOP 去管理事務的。配置也很簡單。
<!-- 支持注解 --> <context:annotation-config/><!-- 事務管理器 --> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"><property name="dataSource" ref="dataSource"/></bean><!-- 聲明式事務 --> <tx:annotation-driven transaction-manager="transactionManager" proxy-target-class="true"/>?
總結
以上是生活随笔為你收集整理的mybatis-spring 项目简介的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 智慧医疗机器人的普及还需很长一段路要走!
- 下一篇: 体验Vysor Pro