解决Spring Boot 集成Mybatis plus提示Mapper包that could not be found.

版本:Spring Boot :: v3.4.5

<dependency>
            <groupId>com.baomidou</groupId>
            <artifactId>mybatis-plus-spring-boot3-starter</artifactId>
            <version>3.5.12</version>
 </dependency>

启动时,出现问题:

2025-05-16 03:06:32 ERROR [restartedMain] o.s.b.diagnostics.LoggingFailureAnalysisReporter - 

***************************
APPLICATION FAILED TO START
***************************

Description:

Field userMapper in com.wewetea.weadmin.controller.HelloController required a bean of type 'com.wewetea.weadmin.mapper.UserMapper' that could not be found.

The injection point has the following annotations:
    - @org.springframework.beans.factory.annotation.Autowired(required=true)


Action:

Consider defining a bean of type 'com.wewetea.weadmin.mapper.UserMapper' in your configuration.


进程已结束,退出代码为 1

解决办法:

  • 方法1. 在接口添加@Mapper即可解决
package com.wewetea.weadmin.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.wewetea.weadmin.model.User;
import org.apache.ibatis.annotations.Mapper;

@Mapper
public interface UserMapper extends BaseMapper<User> {

}
  • 方法2.在启动类添加@MapperScan(value = {"com.domain.*.mapper"})
package com.wewetea.weadmin;

import org.mybatis.spring.annotation.MapperScan;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;

@SpringBootApplication
@MapperScan(value = {"com.wewetea.*.mapper"})
public class WeAdminApplication {

    public static void main(String[] args) {
        SpringApplication.run(WeAdminApplication.class, args);
    }

}
  • 方法3. 添加配置文件DataSourceConfig,这个文件名称无所谓,关键要有@Configuration@MapperScan(value = {"com.wewetea.*.mapper"}),类可以空,不用任何实现。也可以解决。
package com.wewetea.weadmin.config;

import org.mybatis.spring.annotation.MapperScan;
import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.context.annotation.Configuration;

@Configuration
@MapperScan(value = {"com.wewetea.*.mapper"})
class DataSourceConfig {
}
  • 方法4. 【推荐】比较通用的解决方式,新建DataSourceConfig加上注解@Configuration 然后注册一个@Bean添加如下代码:
    /**
     * Mapper接口所在包名,Spring会自动查找其下的Mapper
     * @return mapperScannerConfigurer
     */
    @Bean
    public MapperScannerConfigurer mapperScannerConfigurer() {
        MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
        mapperScannerConfigurer.setBasePackage("**.mapper");
        mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory");

        return mapperScannerConfigurer;
    }

完整配置示例参考:

package com.wewetea.weadmin.config;

import org.mybatis.spring.mapper.MapperScannerConfigurer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

@Configuration
class DataSourceConfig {
   /**
    * Mapper接口所在包名,Spring会自动查找其下的Mapper
    * @return mapperScannerConfigurer
    */
   @Bean
   public MapperScannerConfigurer mapperScannerConfigurer() {
       MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
       mapperScannerConfigurer.setBasePackage("**.mapper");
       mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory");

       return mapperScannerConfigurer;
   }
}

这样即可解决,而且分散不同的jar内,也不会有问题。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容