前言

最近在进行项目重构,在架构师的建议下,就把项目中mybatis切换成mybatis-plus。因为mybatis-plus在mybatis的基础上只做增强不做改变,因此切换的成本很低,就只需改jar和配置内容,原先的代码无需改动。

因为mybatis-plus对mybatis的友好支持,我们花了一点时间就把mybatis改成mybatis-plus,那改造成不成功,先启动一下看不就知道了。然而一启动就翻车了,报了如下的错误

com.baomidou.mybatisplus.core.MybatisConfiguration.getLanguageDriver(Ljava/lang/Class;)Lorg/apache/ibatis/scripting/LanguageDriver;

完整的异常信息如下图

排查思路

从打印的异常信息,我们知道是不存在getLanguageDriver()这个方法。跟进源码会发现

getLanguageDriver这个方法可能是由

com.baomidou.mybatisplus.core.MybatisConfiguration

或者MybatisConfiguration的父类

org.apache.ibatis.session.Configuration

提供。由异常信息我们可以猜测如果项目要启动成功,就需要getLanguageDriver这个方法,而项目目前引用的MybatisConfiguration及其Configuration都无力提供,由此我们可以推断我们项目引入冒牌的MybatisConfiguration或者Configuration。更进一步的推断我们项目中应该存在多个
MybatisConfiguration或者Configuration。用人话来说,就是我们项目存在类冲突,更直白点就是jar冲突

验证过程

1、项目中存在多个MybatisConfiguration?

按住快捷键Ctrl+Shift+R

很遗憾事情不是我们想的那样,MybatisConfiguration只有一个

2、项目中存在多个Configuration?

按住快捷键Ctrl+Shift+R

果然存在2个Configuration。

3、验证包冲突

利用maven-helper插件查看jar冲突

很明显存在mybatis包冲突,而且我们项目引入的3.4.4版本的mybatis,而mybatis-plus需要引入的是3.5.3版本的mybatis

解决思路

借助maven-helper插件,我们可以看出项目是因为包传递依赖间接引入3.4.4版本的mybatis。因此我们把有引用3.4.4版本mybatis的项目升级成引入mybatis 3.5.3版本就行

总结

本文出现的坑挺常见的,利用搜索引擎应该都可以找到答案。写这篇文章除了介绍如何解决这个坑,主要还是想介绍一种排查问题的思路,即假设验证法。因为并不是每次都可以从搜索引擎上找到答案,此时我们就可以根据已知信息去一步步论证推断。最后如果对maven冲突解决感兴趣的朋友,可以查看下我之前写的文章

maven依赖冲突以及解决方法​mp.weixin.qq.com

mybatis jar包_springboot2整合mybatis-plus3踩到的坑相关推荐

  1. mybatis jar包_Spring4+SpringMVC+MyBatis整合思路

    本文主要简单讲解框架整合的思路. 1.Spring框架的搭建 这个很简单,只需要web容器中注册org.springframework.web.context.ContextLoaderListene ...

  2. mybatis jar包_Spring和mybatis的集成步骤

    [1]创建一个工程 创建一个新的java Project 并在工程下创建一个lib文件夹(用于存放拷贝的.jar包文件) [2]导入需要的.jar包 导入项目需要的相关jar包 1)Spring的依赖 ...

  3. mybatis jar包_Java修行第039天---Mybatis框架

    1.掌握框架的概念 (1)框架是什么 a)框架直白来说就是偷懒的程序员将代码进行封装,之后重复使用的过程 b)框架属于半成品 c)在使用框架时,需要告诉框架需要的信息.通常以配置文件的方式告知,一般来 ...

  4. mysql8.0用mybatis哪个版本_SpringBoot整合MyBatis与MySql8.0

    一.前言 之前已经有一篇文章讨论过SpringBoot整合MyBatis,因而此篇不在重复累赘,本文主要是最新版的SpringBoot2.0与MyBatis.最新MySQL8.0整合过程中遇到的问题进 ...

  5. mybatis 一对多_Springboot整合Mybatis实现级联一对多CRUD操作

    在关系型数据库中,随处可见表之间的连接,对级联的表进行增删改查也是程序员必备的基础技能.关于Spring Boot整合Mybatis在之前已经详细写过,不熟悉的可以回顾Spring Boot整合Myb ...

  6. mybatis generator使用_SpringBoot整合Mybatis实现自动生成代码 || 附阿里P8独家SpringBoot视频资料...

    MyBatis 是一款优秀的持久层框架,它支持定制化 SQL.存储过程以及高级映射.MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数以及获取结果集. MyBatis 可以使用简单的 XM ...

  7. 关于Mybatis的列索引无效这个问题踩到的坑

    昨天客户突然要求新增一个组织机构可维护的功能,做一个前端页面.在做到查询功能的时候,根据input输入框输入的汉字进行模糊查询.然后后台一直报错,说列索引无效. 我的解决办法:1.把sql复制到数据库 ...

  8. mybatis mysql uuid_spring boot整合mybatis利用Mysql实现主键UUID的方法

    {"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],&q ...

  9. Mybatis的jar包下载地址

    Mybatis jar包下载地址:https://github.com/mybatis/mybatis-3/releases 与SpringMVC进行整合jar包下载地址:https://github ...

最新文章

  1. 运维的shell小编(6)
  2. js判断是由含有a节点_如何在 JS 中判断数组是否包含指定的元素(多种方法)
  3. solidworks经典实例网盘下载_Solidworks自学视频教程(附源文件)讲解详细到位,成就设计高手...
  4. 【Leetcode | easy】两数之和
  5. github高级搜索技巧_【建议收藏】百度 quot;隐藏quot; 的高级搜索技巧
  6. Ecshop中的ajax+json
  7. Java开源权限管理中间件
  8. CF1396B Stoned Game(博弈论)
  9. 哪里有mysql认证_国内哪个城市可以考mysql认证
  10. 理想传输线终端短路开路和接纯电抗的沿线电压电流分布
  11. 微信小程序项目实例——投骰子
  12. JVAV - 对接支付宝- 下载对账单接口
  13. setBackgroundResource()与setImageBitmap()以及setBackground()的使用
  14. linux wifi开机自动连接 wifi连接
  15. T1114 白细胞计数(信息学一本通C++)
  16. Vue.js 写一个echarts的水滴图
  17. linux内存占用过高问题解决方法
  18. c语言写台球游戏,OpenGL版 3D台球 (原创,Basic实现) 申精!
  19. Docke初始(一)
  20. 【Rhapsody学习笔记】2:Count Down

热门文章

  1. mysql部署jar_mysql+jar踩坑记录
  2. 全国计算机等级考试题库二级C操作题100套(第64套)
  3. python去除图片上的文字_Python图像处理之识别图像中的文字(实例讲解)
  4. 计算机安全基础:加密技术知识笔记
  5. 计算机系统基础:总线结构知识笔记
  6. python 投资组合_重新设计投资组合的好处
  7. 如何写好技术文章(看张鑫旭老师的直播总结
  8. 一名运营,自学一年前端,成功入职杭州某独角兽企业,他的面试经验和学习方法等分享...
  9. 大型网站技术架构(一)大型网站架构演化
  10. IDEA、 JetBrains、webstorm、 pycharm 破解教程