MybatisPlusException: Error: Cannot execute table Method, ClassGenricType not found

约定不等于承诺〃 2023-06-30 06:48 95阅读 0赞

错误介绍:

使用mp的IService CRUD接口报错如下:

com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Error: Cannot execute table Method, ClassGenricType not found

项目背景:

项目集成Mybatis-plus(以下简称mp)之后,想要批量插入数据,又不想自己写sql循环插入,也不想用mp的Mapper CRUD 接口,因为该接口只支持单条数据插入,循环插入的话感觉不好。查看官方文档,发现 Service CRUD 接口 支持批量数据插入:

  1. 官方方法:
  2. // 插入一条记录(选择字段,策略插入)
  3. boolean save(T entity);
  4. // 插入(批量)
  5. boolean saveBatch(Collection<T> entityList);
  6. // 插入(批量)
  7. boolean saveBatch(Collection<T> entityList, int batchSize);

于是单独写了类实现IService 接口,但是类里面需要实现基类里面的所有方法(试了一下,不能正常保存,明显思路不对了)

网上搜了一圈之后发现:下面的类实现了IService

  1. com.baomidou.mybatisplus.extension.service.impl.ServiceImpl

so,我直接继承该类,如下:

  1. public class IServiceImpl extends ServiceImpl,然而不幸的是报错如下:

com.baomidou.mybatisplus.core.exceptions.MybatisPlusException: Error: Cannot execute table Method, ClassGenricType not found

解决方案如下:

public class IServiceImpl extends ServiceImpl

写上对应的Mapper和model类,虽然一开始查看ServiceImpl源码的时候就发现里面定义了前面的两个玩意,但是觉得不影响就没管,但是从报错来看的话,和后面的model大有关联,没指定才会找不到对应的ClassGenricType。

再次尝试之后发现,两个对应的类型都是必须的,少一个都不行,对应的mapper里面继承BaseMapper时也指定了model,所以两个地方都是对应的,随便写一个是会报错的。

说明:以上仅为个人理解,可能有不对地方,若不对,请指正!

发表评论

表情:
评论列表 (有 0 条评论,95人围观)

还没有评论,来说两句吧...

相关阅读