http://www.javashuo.com/article/p-nrernvil-dk.htmljava
總結簡述:spring
<import resource="spring-mybatis.xml"/>
<!-- spring和MyBatis整合,不須要mybatis的配置映射文件 --> <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean"> <property name="dataSource" ref="dataSource" /> <!-- 配置MyBaties全局配置文件:mybatis-config.xml --> <property name="configLocation" value="classpath:sqlmap/mybatis-config.xml" /> <!-- 自動掃描mapping.xml文件 --> <property name="mapperLocations"> <array> <value>classpath:sqlmap/*/*.xml</value> </array> </property> </bean> <!-- DAO接口所在包名,Spring會自動查找其下的類 --> <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer"> <property name="basePackage" value="com.em" /> <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property> </bean>
public class MapperScannerConfigurer implements BeanDefinitionRegistryPostProcessor, InitializingBean, ApplicationContextAware, BeanNameAware
public void postProcessBeanDefinitionRegistry(BeanDefinitionRegistry registry) { if (this.processPropertyPlaceHolders) { processPropertyPlaceHolders(); } ClassPathMapperScanner scanner = new ClassPathMapperScanner(registry); scanner.setAddToConfig(this.addToConfig); scanner.setAnnotationClass(this.annotationClass); scanner.setMarkerInterface(this.markerInterface); scanner.setSqlSessionFactory(this.sqlSessionFactory); scanner.setSqlSessionTemplate(this.sqlSessionTemplate); scanner.setSqlSessionFactoryBeanName(this.sqlSessionFactoryBeanName); scanner.setSqlSessionTemplateBeanName(this.sqlSessionTemplateBeanName); scanner.setResourceLoader(this.applicationContext); scanner.setBeanNameGenerator(this.nameGenerator); scanner.registerFilters(); scanner.scan(StringUtils.tokenizeToStringArray(this.basePackage, ConfigurableApplicationContext.CONFIG_LOCATION_DELIMITERS)); }
ClassPathMapperScanner scanner = new ClassPathMapperScanner(registry);
definition.setBeanClass(this.mapperFactoryBean.getClass());
public T getObject() throws Exception { return getSqlSession().getMapper(this.mapperInterface); }
繼承了FactoryBean<SqlSessionFactory>sql
buildSqlSessionFactory
} else if (this.configLocation != null) { xmlConfigBuilder = new XMLConfigBuilder(this.configLocation.getInputStream(), null, this.configurationProperties); configuration = xmlConfigBuilder.getConfiguration(); }
return this.sqlSessionFactoryBuilder.build(configuration);