1.首先,问题出现的点是在泛型
我出现问题的原因是,和泛型有关系,要调整泛型
2.我把问题出现的过程描述一哈子
1.基础类
@tk.mybatis.mapper.annotation.RegisterMapper public interface BaseModelMapper<T extends BaseModel> extends Mapper<T>,BaseExtraMapper<T> { }
2.在基础mapper上面进行封装
public interface DataSyncMapper<T extends BaseModel> extends BaseModelMapper<T>{ public List<T> selectList(); }
3.service层中调用
@Transactional public class DataSyncServiceImpl<T extends BaseModel,Mapper extends DataSyncMapper > extends BaseModelServiceImpl<T> implements IDataSyncService<T,Mapper> { }
4.然后就很尴尬的出现了上面的问题
但是可以看到,这个也是因为Mapper泛型的原因,继承的Mapper再进行泛型,就会有错误。但是深层次的问题,没有研究也不知道
3.我的解决过程
1.把基础的Mapper封装去掉,单独一个Mapper
public interface DataSyncMapper<T extends BaseModel>{ public List<T> selectList(); }
2.service实现的泛型,调整约束
public class DataSyncServiceImpl<T extends BaseModel,Mapper extends DataSyncMapper & BaseModelMapper> extends BaseModelServiceImpl<T> implements IDataSyncService<T> { }
将约束条件变成同时满足继承DataSyncMapper,BaseModelMapper;
4.总结一下
问题的根本原因其实也没解析出来,但是知道,这个是子接口,父接口的泛型约束问题;可以通过调整泛型解决!
后续,进一步研究一下,再后补。