多个dao(*Mapper.java)继承自定义的通用mapper(MyMapper.java)时,报重复注入的错误

1.报错描述:

**No qualifying bean of type [main.java.base.dao.MyMapper] is defined: expected single matching bean but found 2: attachmentMapper,userMapper。**

2.其他说明:

当只有一个User表时,是不报错的(说明通用mapper的配置没错),但是添加了一个新表Attachment和Attachment表相关代码后,就报这错了。

3.其他代码:

a. 有业务表User表,Attachment表;对应mapper:UserMapper.java和AttachmentMapper.java;对应业务接口UserService.java和AttachmentService.java;接口对应相应的实现类UserServiceImpl.java和AttachmentServiceImpl.java。

b. 有自定义通用mapper:MyMapper.java。通用业务处理接口BaseService.java和对应接口实现类BaseServiceImpl.java。
	    
c. 继承描述:
    1. 自定义的MyMapper.java继承Mapper<T>,InsertListMapper<T>,IdsMapper<T>。如下:
        public interface MyMapper<T> extends 
            Mapper<T>,
            InsertListMapper<T>,
            IdsMapper<T>{
        }
    2. UserMapper.java和AttachmentMapper.java都继承MyMapper.java。如下:
            public interface UserMapper extends MyMapper<User>{}
            public interface AttachmentMapper extends MyMapper<Attachment>{}
    3. UserService.java和AttachmentService都继承BaseService.java。如下:
            public interface AttachmentServiceextends BaseService<User>{}
            public interface AttachmentService extends BaseService<Attachment>{}
    4. UserServiceImpl.java和AttachmentServiceImpl都继承BaseServiceImpl.java,如下:
            @Service
            public class UserServiceImpl extends BaseServiceImpl<User> implements UserService{}
            @Service
            public class AttachmentServiceImpl extends BaseServiceImpl<Attachment> implements AttachmentService{}
d. BaseService.java通用业务类如下:
       public interface BaseService<T> {
	public List<T> select(T record);
   }
3. BaseServiceImpl.java如下:
    @Service
    public class BaseServiceImpl<T> implements BaseService<T> {
    @Resource
    private MyMapper<T> mapper;

    @Override
    public List<T> select(T record) {
	return mapper.select(record);
    }
    }
e. 配置文件。application-context.xml。通用mapper配置:
       <!-- 使用自定义的MyMapper,方便以后扩展 -->
   <bean class="tk.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="main.java.dao"/>
	<property name="properties" value="main.java.base.dao.MyMapper"/>
       </bean>

在这里插入图片描述
必须要在通用Mapper上把@Resource换成@Autowired,这样就解决了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值