1.
1 <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> 2 <property name="annotationClass" value="org.springframework.stereotype.Repository"/> 3 <property name="basePackage" value="cn.jesong.webcall.report.dao"/> 4 <property name="sqlSessionFactory" ref="sqlSessionFactory"/> 5 </bean>
2.
MapperFactoryBean的出現為了代替手工使用SqlSessionDaoSupport或SqlSessionTemplate編寫數據訪問對象(DAO)的代碼,使用動態代理實現。
1 <bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean"> 2 <property name="mapperInterface" value="org.mybatis.spring.sample.mapper.UserMapper" /> 3 <property name="sqlSessionFactory" ref="sqlSessionFactory" /> 4 </bean>
3.
org.mybatis.spring.sample.mapper.UserMapper是一個接口,我們創建一個MapperFactoryBean實例,然后注入這個接口和sqlSessionFactory(mybatis中提供的SqlSessionFactory接口,MapperFactoryBean會使用SqlSessionFactory創建SqlSession)這兩個屬性。
之后想使用這個UserMapper接口的話,直接通過spring注入這個bean,然后就可以直接使用了,spring內部會創建一個這個接口的動態代理。
當發現要使用多個MapperFactoryBean的時候,一個一個定義肯定非常麻煩,於是mybatis-spring提供了MapperScannerConfigurer這個類,它將會查找類路徑下的映射器並自動將它們創建成MapperFactoryBean。
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"><property name="basePackage" value="org.mybatis.spring.sample.mapper" /></bean>
這段配置會掃描org.mybatis.spring.sample.mapper下的所有接口,然后創建各自接口的動態代理類。