Mybatis-plusとMybatisの間の依存関係の競合を解決します

記事のディレクトリ

間違った説明

An attempt was made to call a method that does not exist. The attempt was made from the following location:

 com.baomidou.mybatisplus.core.MybatisMapperAnnotationBuilder.getLanguageDriver(MybatisMapperAnnotationBuilder.java:369)

The following method did not exist:

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

The method's class, com.baomidou.mybatisplus.core.MybatisConfiguration, is available from the following locations:

説明

SpringBootバージョン:2.3.9。リリース
MyBatis-plusバージョン:3.3.1

この問題は最初は存在しませんでした。SpringBootバージョン2.Xでは正常でしたが、SpringBootバージョンをアップグレードした後、この問題が発生しました。
ここに画像の説明を挿入

解決プロセス

まず第一に、問題が何であるかについて決定的な結論を出さないでください。このような問題の場合、IDEAツールを使用して問題を見つけることができます。[1]をクリックして対応するコード位置を入力します。クリックする必要があることに注意してください。右上隅にある[ソースのダウンロード]プロンプトでソースコードをダウンロード
ここに画像の説明を挿入
し、コードがダウンロードされるの待ちます。その後、構成にgetLanguageDriverメソッドがないことがはっきりとわかります。構成オブジェクトを入力すると、
ここに画像の説明を挿入
次のことがわかります。最終的に上の位置に配置され、extendsキーワードを参照して、getLanguageDriverが次の2つのクラスに存在する必要があることを分析します。

com.baomidou.mybatisplus.core.MybatisConfiguration
org.apache.ibatis.session.Configuration

上記の2つのパッケージパスの分析では、最初のパスがmybatisplus.coreの依存関係に属し、2番目のパスがmybatisの依存関係に属していることがわかるため、2つのケースを別々にテストします
。1。アップグレードmybatisplusパッケージの依存関係。しかし、私の側はすでに非常に高いバージョンです。時間内に最新バージョンにアップグレードした後も、getLanguageDriverメソッドが表示されないため、問題は発生しません
。2.mybatisパッケージをアップグレードします。導入されたmybatis-plus-boot-starterは統合されたMyBatisパッケージであるため、最初にそれを除外してから、MyBatisパッケージの依存関係の別の上位バージョンを導入する必要があります

ここに画像の説明を挿入
アップグレードが完了したら、今すぐ間違った位置に入力してください。正常であることがわかります。

ここに画像の説明を挿入

このメソッドの最終処理ロジックは、親クラス
org.apache.ibatis.session.Configuration#getLanguageDriverによって完了していることがわかります。

おすすめ

転載: blog.csdn.net/Octopus21/article/details/114879758