Springboot集成mybatis-plus报错java.lang.ClassNotFoundException: org.mybatis.logging.LoggerFactory解决

Springboot集成mybatis-plus报错java.lang.ClassNotFoundException: org.mybatis.logging.LoggerFactory解决

  • 背景
  • 问题
  • 排查过程

背景

新接手了一个项目,是不同小组联合开发的,这个项目原本是使用jpa,有同事提议集成一下mybatis,因为用的习惯,业务sql写起来也比较方便,于是我就负责把mybatis-plus集成到里面,把当中遇到的一些错误记录一下。

问题

按照官网文档的步骤,其实很简单,如果是新项目是一点问题都没有用的,但是我们这是老的springboot项目,集成启动发现报了如下错误:
Springboot集成mybatis-plus报错java.lang.ClassNotFoundException: org.mybatis.logging.LoggerFactory解决_第1张图片
是的,这个错误其实不难理解,就是找不到类嘛,但是关键是,为什么呢?为什么新项目就没问题,而我这个老项目就找不到呢?于是下意识问了一下度娘,有人说加上一个mybatis-plus扩展包就解决问题了,好的,我照做,结果还是报这个错误,奇怪,于是我再认真看看官方文档:
Springboot集成mybatis-plus报错java.lang.ClassNotFoundException: org.mybatis.logging.LoggerFactory解决_第2张图片

排查过程

于是我检查mybatis-plus引入的包,源码部分确实有导入这个类:
Springboot集成mybatis-plus报错java.lang.ClassNotFoundException: org.mybatis.logging.LoggerFactory解决_第3张图片
于是我在idea搜索这个类,并没有找到,而且看了一下mybatis-plus拉取的mybatis和mybatis-spring包里面,也没发现有org.mybatis前缀的包名:
Springboot集成mybatis-plus报错java.lang.ClassNotFoundException: org.mybatis.logging.LoggerFactory解决_第4张图片
这时候我灵机一动,怎么就不去看看版本一样另一个可以跑的新项目呢?于是发现,同一版本的mybatis-plus拉取的mybatis和mybatis-plus的版本在两个项目果然不一样,以下是新项目拉取的版本:
Springboot集成mybatis-plus报错java.lang.ClassNotFoundException: org.mybatis.logging.LoggerFactory解决_第5张图片
至此,终于发现问题了,是mybatis-spring这个依赖包版本太低了,可是为什么会这样呢?原因是我们老项目的lib-parent指定了最低版本的mybatis-spring依赖,导致引入mybatis-plus下载的依赖包也是低版本,引起不兼容,那么解决方法就是我们引入高版本覆盖它们:
Springboot集成mybatis-plus报错java.lang.ClassNotFoundException: org.mybatis.logging.LoggerFactory解决_第6张图片
到此为止,完美解决了!

你可能感兴趣的:(java,spring,spring,boot,java)