Mybatis 如何扫描多个包下的mapper,

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/sword_anyone/article/details/79601111

今天做毕业设计的时候,添加了一个mapper到项目中,然后发现报了一个错误:

org.springframework.beans.factory.BeanCreationException: 
Error creating bean with name 'defaultParamController': Injection of autowired dependencies failed;
 nested exception is org.springframework.beans.factory.BeanCreationException: Could not autowire field: 
 com.zyj.web.service.defaultParam.controller.DefaultParamController.defaultParamService; nested exception is 
Error creating bean with name 'defaultParamServiceImpl':
 Injection of autowired dependencies failed; nested exception is 
public com.zyj.web.service.defaultParam.mapper.DefaultParamExtendsMapper 
com.zyj.web.service.defaultParam.service.impl.DefaultParamServiceImpl.defaultParamExtendsMapper;
 nested exception is org.springframework.beans.factory.NoSuchBeanDefinitionException:
 expected at least 1 bean which qualifies as autowire candidate for this dependency.
  Dependency annotations: {@org.springframework.beans.factory.annotation.Autowired(required=true)}

追根究底就是mapper没有被扫描到,而原先我以为的是@autowired注解的bean没有配置进IOC容器中,结果居然是mapper没有被扫描到,接下来解决这个问题的方法就是:

<bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
        <property name="basePackage" 
        value="com.zyj.authorization.mapper,com.zyj.web.service.defaultParam.mapper"></property>
    </bean>

在basePackage中使用逗号或者分号作为分隔符去给映射器接口文件设置多个包的路径,让其能够被递归扫描到。

猜你喜欢

转载自blog.csdn.net/sword_anyone/article/details/79601111
今日推荐