'org.mybatis.spring.mapper.MapperScannerConfigurer' to required type 'xxx' for property 'XX'

2019/4/8
问题描述
在bean中通过通过org.mybatis.spring.mapper.MapperScannerConfigurer进行mapper的批量配置,代码如下

<bean id="studentMapper" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
	<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
	<!-- 制定批量产生那个包中的mapper文件 -->
	<property name="basePackage" value="mapper"></property>
</bean>

<bean id="studentService" class="service.Impl.StudentServiceImpl">
	<property name="studentMapper" ref="studentMapper"></property>
</bean>

结果运行测试类的时候报如下错:

'org.mybatis.spring.mapper.MapperScannerConfigurer' to required type 'mapper.StudentMapper' for property 'studentMapper'

解决思路
由于该方式是通过批量配置mapper文件,所以第一个 bean id="studentMapper"显然有问题,因为这里id代表配置多个mapper文件,然后第二bean又使用了ref=studentMapper。矛盾在于,第一个id表示批量配置mapper的一个id,第二个bean表示某一个mapper文件的ref,这就产生了冲突。

解决方法
1.把第一bean id 的值改成"mappers",表示批量配置
2.把第二个bean的ref值改成对应mapper的java文件名。(批量产生Mapper在SpringIOC中的id值默认就是接口名)

修改后代码如下

<bean id="mappers" class="org.mybatis.spring.mapper.MapperScannerConfigurer">
		<property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"></property>
		<!-- 制定批量产生那个包中的mapper文件 -->
		<property name="basePackage" value="mapper"></property>
	</bean>
	
	<bean id="studentService" class="service.Impl.StudentServiceImpl">
		<property name="studentMapper" ref="studentMapper"></property>
	</bean>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值