这种简化配置的方法在下面这篇博客中已经用到了,但是因为太重要了,所以把他单独拿出来讲。
springMVC(三)—— 整合SSM框架_玛丽莲茼蒿的博客-CSDN博客IDEAtomcat 8。https://blog.csdn.net/qq_44886213/article/details/131657063?spm=1001.2014.3001.5501
在我们只用mybatis这一个框架的时候,假如我们有一个BookMapper.java接口,有一个对应的BookMapper.xml配置文件,并不需要写BookMapper接口的实现类BookMapperImpl.java。
因为我们没写service层,执行的时候可以直接用反射得到的mapper实例去执行。
BookMapper bookMapper = sqlSession.getMapper(BookMapper.class);
Book book = bookMapper.getBookById("1"); //底层是SQL的执行
但是,当我们既有service层,又有dao层的时候,service层的实例就要去调用dao层的实例,那我们就得写BookMapper接口的实现类BookMapperImpl。有10个XXmapper接口就要写10个XXmapper.xml和10个XXmapperImpl.java实现类。如何简化一下,不用写实现类了呢?
在spring配置文件中进行如下的配置,不仅能够自动生成dao层的实现类,还能自动注入到bean中。
<!--4、配置dao接口扫描包,动态实现dao接口注入到spring容器中(这样就不用写BooksMapperImpl.java文件了,也就是不用写标有@Repository的类了-->
<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
<!--注入sqlSessionFactory-->
<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
<!--要扫描的包-->
<property name="basePackage" value="dao"/>
</bean>