java.lang.NoSuchMethodException: tk.mybatis.mapper.provider.base.BaseSelectProvider. ()


這個問題好奇怪,

出現這個錯誤是通用Mapper初始化的錯誤,排查的方向就是往這個方向,可能的情況有以下幾種:

1.jar包沖突

<dependency>
<groupId>tk.mybatis</groupId>
<artifactId>mapper</artifactId>
<version>3.3.9</version>
</dependency>
<dependency>
   <groupId>tk.mybatis</groupId>
   <artifactId>mapper-spring-boot-starter</artifactId>
   <version>2.0.0</version>
</dependency>
如圖所示這里有兩個tk.mybatis通用Mapper的包了,所以springboot不知道該初始化哪個

<dependency>
   <groupId>tk.mybatis</groupId>
   <artifactId>mapper-spring-boot-starter</artifactId>
   <version>2.0.0</version>
</dependency>
這里使用這個包,重啟后運行正常

2,MapperCan 掃包配置錯誤

@SpringBootApplication
@MapperScan(basePackages = "com.example.demo.*.dao")
@ComponentScan("com.example.demo.*")
public class DemoApplication extends SpringBootServletInitializer{
之前配置的是

@MapperScan(basePackages = "com.example.demo.*.dao")
應該改成

@MapperScan(basePackages = "com.example.demo.*.dao.*")
我思考了以下應該是掃包的話是掃很多個包,所以應該是以*結尾的

這樣重啟后正常
--------------------- 
作者:躍躍的呢 
來源:CSDN 
原文:https://blog.csdn.net/y2446421841/article/details/80566082 
版權聲明:本文為博主原創文章,轉載請附上博文鏈接!

 

看起來好像BaseSelectProvider 需要一個無參的構造器,但是查看了BaseSelectProvider源碼,確實是沒有的,怎么辦呢? 感覺好像是版本問題,

 

嘗試導入:

import tk.mybatis.spring.annotation.MapperScan;

但是沒有這個類,只有另外的一個,但是 那個恰恰是 好像是錯誤的根源。

        <dependency>
            <groupId>tk.mybatis</groupId>
            <artifactId>mapper-spring-boot-starter</artifactId>
            <!--<version>1.1.5</version>-->
            <version>2.0.0</version>
        </dependency>

后面把版本從1.1.5 改成了 2.0.0 就好了, 奇怪了。

 

https://www.jianshu.com/p/71fe3b73479c

https://blog.csdn.net/Dongguabai/article/details/80729563

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM