版本: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内,也不会有问题。