mybatis有个很坑的问题,测试环境可以运行,线上运行就报错,最近有个问题把我搞蒙了,摧残浪费蹂躏我将近一天的韶光,终于找到了问题的根源!
我打包的springbootjar在测试和准生产都可以运行,可是发布莅临盆就报错了,总是提示 “tk.mybatis.mapper.MapperException: 无法获取实体类xxx对应的表名”,个中xxx为表对应的实体,一开始以为实体的@Table写错了,我又重新用反编译软件检讨了一下,创造这个实体和其他实体并没差异,那到底是什么问题呢?
网上说是@MapperScan表明import的类不对,利用的是 import org.mybaties.spring.annotation.MapperScan;,但我创造反编译里面利用也是对的,是 import tk.mybatis.spring.annotation.MapperScan;这让我感到很失落望,觉得没有了任何的头绪。不对不佩服spring的加载神操作
末了我创造有个高手还真找到了问题,问题的根源是:
项目的lib里面同时存在mapper-3.4.2.jar、mapper-core-1.1.6.jar两个jar, 而这两个jar里都有一个共同的类“tk.mybatis.mapper.mapperhelper.EntityHelper”类,jvm在加载他们就冲突报错。
办理的办法:
mapper-3.4.2.jar删除,或者直接在maven的pom中将mapper-3.4.2.jar对应的依赖去除。
去除这个jar后,运行完美,没有任何的报错,不对不佩服这个高手啊,花了我一天的韶光才找到这个问题,真是苦逼,记录下来,希望往后可以用到