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

這個問題好奇怪,spring

出現這個錯誤是通用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源碼,確實是沒有的,怎麼辦呢? 感受好像是版本問題,springboot

 

嘗試導入:mybatis

import tk.mybatis.spring.annotation.MapperScan;app

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

        <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 就行了, 奇怪了。spring-boot

 

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

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

相關文章
相關標籤/搜索