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.總結一下
問題的根本原因其實也沒解析出來,但是知道,這個是子接口,父接口的泛型約束問題;可以通過調整泛型解決!
后續,進一步研究一下,再后補。