当前使用版本(必填,否则不予处理)
3.4.2
该问题是如何引起的?(确定最新版也有问题再提!!!)
我司对 ServiceImpl, BaseMapper 做了二次封装
public class BaseServiceImpl<T> extends ServiceImpl<BaseDao<T>, T> implements IBaseService<T>, ILogging {
}
我们的实现类方式有所不同
public class xxxImpl extends BaseServiceImpl<xxxEntity> implements xxxService {
}
因为在impl中没有指定Mapper类型, 所以 ServiceImpl 中获取 currentMapperClass 在我们的工程中无法获取到 索引 0 是 model 类型, 索引 1 是 Object
重现步骤(如果有就写完整)
报错信息
Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for com.weibi.contract.entity.ContractBinanceAssetEntity.selectById
at org.mybatis.spring.MyBatisExceptionTranslator.translateExceptionIfPossible(MyBatisExceptionTranslator.java:92) at com.baomidou.mybatisplus.extension.toolkit.SqlHelper.executeBatch(SqlHelper.java:185) at com.baomidou.mybatisplus.extension.toolkit.SqlHelper.executeBatch(SqlHelper.java:207) at com.baomidou.mybatisplus.extension.toolkit.SqlHelper.saveOrUpdateBatch(SqlHelper.java:235) at com.baomidou.mybatisplus.extension.service.impl.ServiceImpl.saveOrUpdateBatch(ServiceImpl.java:176) ...
Comment From: beichenhpy
这没办法吧,只能把你二次封装的加上泛型加上Mapper吧,不然mapper找不到
Comment From: R-anybbo
这没办法吧,只能把你二次封装的加上泛型加上Mapper吧,不然mapper找不到
现在加上 动的东西太多了, 我现在的做法是 重写了 currentMapperClass 方法 😭
Comment From: wanyouming
我是个小人物,我自己也在ServiceImpl上做了一些改动,其实就是把set注入改变成构造器注入,不会出现空指针,缺点就是:必须得有一个子类的,构造函数,在我自己的仓库,csdn上都有记录,(学生,暂没考虑版权,如果有冒犯,未来在公司开发中坚决不这么干) 请教各位大大,公司开发中,如果真用了这种手段(舍不得),会有版权问题吗?
Comment From: qmdx
重写了 currentMapperClass 方法, 是合理做法