当前使用版本(必填,否则不予处理)
1.18.20
该问题是如何引起的?(确定最新版也有问题再提!!!)
IService只有泛型T,表示实体类型,而ServiceImpl则有泛型M,T,M表示具体Mapper,T表示具体实体类型
ServiceImpl的设计明显远好于IService,不知道为什么IService不这样设计。现在这个错误的设计引发了一个巨坑。
IService.getBaseMapper()只能获取到BaseMapper
重现步骤(如果有就写完整)
注入IService,getBaseMapper只能得到BaseMapper
报错信息
解决办法
添加泛型M,getBaseMapper返回类型改成M
Comment From: summer2516
需要获取的不是BaseMapper 我需要是的UserMapper我自己定义的Mapper
Comment From: vipcxj
需要获取的不是BaseMapper 我需要是的UserMapper我自己定义的Mapper
就是这个意思,BaseMapper不管里面泛型是啥,都改变不了这东西肯定不包含我自定义方法的困境~
Comment From: AneonCode
这个设计者当时应该是为了把各层能够充分的隔离开 比如在AServiceImpl中想要使用B模块的内容,只应该使用B模块的IService中的方法,如果更下一层的BMapper中的方法想要在A中使用,应该在IBService中去封装一层,然后在A中直接调用的是IBService中的方法而不是想办法去获取BMapper直接调用BMapper中的方法。
Comment From: huayanYu
设计思路不一样,可以参考设计自己的service。