记一次排查Mybatisplus报Cannot execute table Method, ClassGenricType not found
报错如下
com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Error: Cannot execute table Method, ClassGenricType not found . at com.baomidou.mybatisplus.core.toolkit.ExceptionUtils.mpe(ExceptionUtils.java:49) at com.baomidou.mybatisplus.core.toolkit.Assert.isTrue(Assert.java:38) at com.baomidou.mybatisplus.core.toolkit.Assert.notNull(Assert.java:72) at com.baomidou.mybatisplus.extension.toolkit.SqlHelper.table(SqlHelper.java:86) at com.baomidou.mybatisplus.extension.service.impl.ServiceImpl.sqlStatement(ServiceImpl.java:113) at com.baomidou.mybatisplus.extension.service.impl.ServiceImpl.saveBatch(ServiceImpl.java:126) at com.baomidou.mybatisplus.extension.service.IService.saveBatch(IService.java:69) at com.paraview.esc.idm.app.permission.service.impl.AppAccountPermissionLinkServiceImpl.bindRole(AppAccountPermissionLinkServiceImpl.java:191) at com.paraview.esc.idm.web.service.impl.IAppAccountPermissionLinkServiceImpl.bindRole(IAppAccountPermissionLinkServiceImpl.java:31) at com.paraview.esc.idm.web.service.impl.IAppAccountPermissionLinkServiceImpl$$FastClassBySpringCGLIB$$b5279cc1.invoke(<generated>) at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:218)
代码程序结果是这样的
ServiceImpl是mybatisplus的com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
AppAccountPermissionLinkServiceImpl也是通过maven引入的
因为业务需要,需要对AppAccountPermissionLinkServiceImpl的一些方法进行覆盖重写
但是由于IAppAccountPermissionLinkServiceImpl不是直接继承ServiceImpl而是继承于它的子类,所有在执行saveBatch时出现了以上错误
在查看ServiceImpl底层源码时发现以下源码
从以上源码可知,mybatisplus的ServiceImpl的saveBatch方法(updateBatchById方法也是如此)是通过获取子类继承时指定的泛型参数里的第二个参数去获取实体类的
由于我没有直接继承ServiceImpl而且去继承了它的子类,导致mybatisplus获取不到bean类
解决方案:
重写ServiceImp的currentModelClass方法,直接返回对应的实体类
作者:ki16
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须在文章页面给出原文连接,否则保留追究法律责任的权利。