基于MapperScannerConfigurer的整合
在实际的项目中,DAO层会包含很多接口,如果每一个接口都像上一小节中那样在Spring配置文件中配置,那么不但会增加工作量,还会使得Spring配置文件非常臃肿。为此,MyBatis-Spring团队提供了一种自动扫描的形式来配置MyBatis中的映射器——采用MapperScannerConfigurer类。
MapperScannerConfigurer类在Spring配置文件中使用时可以配置以下几个属性:
● basePackage:指定映射接口文件所在的包路径,当需要扫描多个包时可以使用分号或逗号作为分隔符。指定包路径后,会扫描该包及其子包中的所有文件。
● annotationClass:指定了要扫描的注解名称,只有被注解标识的类才会被配置为映射器。
● sqlSessionFactoryBeanName:指定在Spring中定义的SqlSessionFactory的Bean名称。
● sqlSessionTemplateBeanName:指定在Spring中定义的SqlSessionTemplate的Bean名称。如果定义此属性,则sqlSessionFactoryBeanName将不起作用。
● markerInterface:指定创建映射器的接口。
MapperScannerConfigurer的使用非常简单,只需要在Spring的配置文件中编写如下代码:
<!-- Mapper代理开发(基于MapperScannerConfigurer) -->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<property name="basePackage" value="com.itheima.mapper" />
</bean>
通常情况下,MapperScannerConfigurer在使用时只需通过basePackage属性指定需要扫描的包即可,Spring会自动的通过包中的接口来生成映射器。这使得开发人员可以在编写很少代码的情况下,完成对映射器的配置,从而提高开发效率。
要验证上面的配置也很容易,只需将上述配置代码写入Spring的配置文件,并将上一小节中的第(2)步和第(3)步的代码注释掉,再次执行findCustomerByIdMapperTest()方法进行测试即可。