- MapperFactoryBean的一个问题是每个接口映射都需要手动添加,需要用到的映射器较多的话,采用这种配置方式就会很低效。
- 为了解决这个问题,我们可以使用MapperScannerConfigurer,让它扫描特定的包,自动帮我们成批的创建映射器。这样一来,就能大大减少配置的工作量,我们就不要手动添加接口映射了(减少了mapperInterface的参数添加,即同时封装了sqlSessionFactory和Mapper的映射代理)
- MapperScannerConfigurer对象(org.mybatis.spring.mapper.MapperScannerConfigurer),通过循环找到basePackage包中所有接口,调用sqlSession.getMapper创建接口对象,并把对象的代理放在容器中
示例
<!--
<bean id="userMapper" class="org.mybatis.spring.mapper.MapperFactoryBean">
<!--指定配置的sqlSessionFactory-->
<property name="sqlsessionFactoryBeanName" value="sqlSessionFactory"/>
<!--加入接口-->
<property name="mapperInterface" value="com.exi.dao.UserMapper"/>
<property name="mapperInterface" value="com.exi.dao.StudentMapper"/>
…
</bean>
-->
<!--配置MapperScannerConfigurer对象-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!--指定配置的sqlSessionFactory-->
<property name="sqlsessionFactoryBeanName" value="sqlSessionFactory"/>
<!--指定Mapper对象接口所在的包名-->
<property name="basePackage" value="com.exi.dao"/>
</bean>
<!--service使用dao-->
<bean id="service" class="com.exi.dao.UserServiceImpl"> <property name="userDao" ref="userDao" /> <property name="userDao" ref="studentDao" /> </bean> |