SpringBoot無法掃描到Mapper的解決方法

一、springboot掃描不到mapper文件

在使用SpringBoot開發時,如果出現無法掃描到Mapper文件的情況,可以首先確認以下幾點:

1、Mapper文件是否被放置在了正確的包路徑下。

這裡建議將Mapper文件放置在與主類所在的包路徑下,這樣SpringBoot就能自動掃描到。

├─com
│  └─example
│      └─demo
│          ├─controller
│          ├─dao
│          ├─entity
│          ├─mapper
│          ├─service
│          └─DemoApplication.java

2、Mapper文件是否被註解@MapperScan或@MapperScan(value = “com.example.demo.dao”)指定掃描到。

如果Mapper文件不在主類的同級或子級包下,需要通過在主類上使用@MapperScan或者@MapperScan(value = “com.example.demo.dao”)指定掃描到的路徑,否則SpringBoot是無法自動掃描到的。

@SpringBootApplication
@MapperScan(value = "com.example.demo.dao")
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

二、springboot掃描不到mapper接口

如果使用MyBatis時,Mapper接口和Mapper.xml文件是分開的,除了前面提到的路徑問題,還需要注意以下兩點:

1、Mapper接口的命名和Mapper.xml文件名需要一致。

2、在Mapper接口上需要添加@Mapper註解。

@Mapper
public interface UserMapper {
    User getUserById(int id);
}

三、springboot掃描不到mapper包

如果Mapper文件和Mapper接口的包路徑不同,需要在主類上指定掃描的包。

可以在@SpringBootApplication註解中添加scanBasePackages屬性,指定需要掃描的包路徑。

@SpringBootApplication(scanBasePackages = {"com.example.demo.mapper"})
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

四、springboot掃描不到service

如果出現Spring無法掃描到Service的情況,可以首先確認以下幾點:

1、Service文件是否被放置在了正確的包路徑下。

2、Service文件是否在主類的同級或子級包下。

3、主類上是否添加了@ComponentScan或者@SpringBootApplication註解。

如果在Service中需要注入Mapper,請確保Mapper已經被成功掃描到。

五、springboot掃描不到controller包

如果出現Spring無法掃描到Controller的情況,可以先確認以下幾點:

1、Controller文件是否被放置在了正確的包路徑下。

2、Controller文件是否在主類的同級或子級包下。

3、主類上是否添加了@ComponentScan或者@SpringBootApplication註解。

六、springboot掃描不到jar包

如果引入的jar包中有Mapper文件,但是SpringBoot無法自動掃描到,可以嘗試以下方法:

1、在@SpringBootApplication註解中添加scanBasePackages屬性,手動指定需要掃描的包路徑。

2、手動配置MapperScannerConfigurer,指定Mapper文件所在的路徑。

@Configuration
public class MyBatisConfig {
 
    @Bean
    public MapperScannerConfigurer mapperScannerConfigurer() {
        MapperScannerConfigurer mapperScannerConfigurer = new MapperScannerConfigurer();
        mapperScannerConfigurer.setSqlSessionFactoryBeanName("sqlSessionFactory");
        mapperScannerConfigurer.setBasePackage("com.example.demo.mapper");
        return mapperScannerConfigurer;
    }
}

七、springboot掃描不到controller

如果出現Spring無法掃描到Controller的情況,可能是以下情況之一:

1、Controller類沒有添加@Controller註解或@RestController註解。

2、Controller類沒有被放置在與主類相同或子包中。

3、主類上未添加@ComponentScan或@SpringBootApplication註解。

八、springboot掃描不到bean

如果出現Spring無法掃描到Bean的情況,可以首先檢查以下問題:

1、Bean是否被註解為@Service、@Repository、@Component或@Controller。

2、Bean是否被放置在了正確的包路徑下,且與主類相同或在其子包中。

3、主類上是否添加了@ComponentScan或@SpringBootApplication註解。

九、springboot掃描不到dao

如果出現Spring無法掃描到Dao類的情況,可以先檢查以下幾點:

1、Dao類是否被註解為@Mapper或@Repository。

2、Dao類是否被放置在了正確的包路徑下,且與主類相同或在其子包中。

3、Mapper文件是否命名正確、被放置在了正確的位置,且與Dao類的包路徑一致。

十、springboot掃描不到配置類

如果出現Spring無法掃描到配置類的情況,可以嘗試以下方法:

1、手動在主類上使用@Import註解導入配置類。

@Import(MybatisConfig.class)
@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

2、手動在主類上添加@Configuration註解,標記該類為配置類。

@Configuration
public class MybatisConfig {
   // mybatis配置代碼
}

3、手動在主類上添加@ComponentScan註解,指定配置類所在的包路徑。

@ComponentScan(basePackages = "com.example.demo.config")
@SpringBootApplication
public class DemoApplication {
    public static void main(String[] args) {
        SpringApplication.run(DemoApplication.class, args);
    }
}

原創文章,作者:UJYP,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/143145.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
UJYP的頭像UJYP
上一篇 2024-10-14 18:45
下一篇 2024-10-14 18:45

相關推薦

發表回復

登錄後才能評論