程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> 詳解Java的MyBatis框架與Spring框架整合中的映照器注入

詳解Java的MyBatis框架與Spring框架整合中的映照器注入

編輯:關於JAVA

詳解Java的MyBatis框架與Spring框架整合中的映照器注入。本站提示廣大學習愛好者:(詳解Java的MyBatis框架與Spring框架整合中的映照器注入)文章只能為提供參考,不一定能成為您想要的結果。以下是詳解Java的MyBatis框架與Spring框架整合中的映照器注入正文


MyBatis-Spring許可你在Service Bean中注入映照器。當應用映照器時,就像挪用DAO那樣來挪用映照器便可以了,然則此時你就不須要停止任何DAO完成的編碼,由於MyBatis會為你停止。
應用注入的映照器,你的代碼就不會湧現任何MyBatis-Spring依附和MyBatis依附。在我們的運用中有如許一個簡略的映照器。你也應當曉得映照器僅僅是一個接口:

public interface UserMapper {  
  User getUser(String userId);  
}  

這是你應用MyBatis-Spring來創立映照器的方法:

<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">  
  <property name="sqlSessionFactory" ref="sqlSessionFactory" />  
  <property name="mapperInterface" value="sample.UserMapper" />  
</bean>  

如今你的映照器曾經預備在Service對象中注入了:

<bean id="fooService" class="sample.FooServiceImpl"> 
  <property name="userMapper" ref="userMapper"/> 
</bean> 

注:映照器接口全類名與映照器xml設置裝備擺設文件的namespace是對應的。
 
關於MapperFactoryBean
MapperFactoryBean創立的署理類完成了映照器接口(如上例:UserMapper),而且注入到運用法式中。由於署理創立在運轉情況中,那末指定的映照器必需是一個接口。而不是一個詳細的完成類。 

沒有需要在Spring的XML設置裝備擺設文件中注冊一切的映照器。相反,你可使用一個MapperScannerConfigurer,它將會查找類途徑下的映照器並主動將它們創立成MapperFactoryBeans。要創立MapperScannerConfigurer,可以在Spring的設置裝備擺設中添加以下代碼:

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 
  <propery name="basePackage" value="org.mybatis.spring.sample.mapper"/> 
</bean> 

 
basePackage屬性是讓你為映照器接口文件設置根本的包途徑。你可使用分號或逗號作為分隔符設置多於一個的包途徑。每一個映照器將會在指定的包途徑中遞歸地被搜刮到。
留意,沒有需要去指定SqlSessionFactory或SqlSessionTemplate,由於MapperScannerConfigurer將會創立MapperFactoryBean,以後主動拆卸。然則,假如你應用了一個以上的DataSource(是以,也是多個的SqlSessionFactory),那末主動拆卸能夠會掉效。這類情形下,你可使用sqlSessionFactory或sqlSessionTemplate屬性來設置准確的工場/模板。
 
MapperScannerConfigurer支撐過濾由指定的創立接口或注解創立映照器。annotationClass屬性指定了要尋覓的注解稱號。markerInterface屬性指定了要尋覓的父接口。假如二者都被指定了,參加到接口中的映照器會婚配兩種尺度。默許情形下,這兩個屬性都是null,所以在基包中給定的一切接口可以作為映照器加載。
 
被發明的映照器將會應用Spring對主動偵測組件默許的定名戰略來定名。也就是說,假如沒有發明注解,它就會應用映照器的非年夜寫的非完整限制類名。然則假如發明了@Component或JSR-330@Named注解,它會獲得稱號。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved