这个问题好奇怪,

出现这个错误是通用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.*")
我思考了以下应该是扫包的话是扫很多个包,所以应该是以*结尾的

这样重启后正常
--------------------- 
作者:跃跃的呢 

 

看起来好像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 就好了, 奇怪了。