mybatis @MapperScan 不工作

mybatis @MapperScan not working

我正在尝试为 MyBatis 设置 Java 配置,@MapperScan 似乎没有完成任何事情。请注意,我可以让应用程序使用 XML 配置。

我错过了什么? com.test.mapper 包确实存在并且有一个名为 TestMapper 的 file/iterface。相应的 xml 在资源文件夹中的正确位置。

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


Description:

Field templateMapper in com.test.TestController required a bean of type 'com.test.mapper.TestMapper' that could not be found.

Action:

Consider defining a bean of type 'com.test.mapper.TestMapper' in your configuration.

Autowired 失败

@Autowired
TestMapper _testMapper;

配置

@Configuration
@MapperScan("com.test.mapper")
public class AppConfig {

   @Bean
   public DataSource dataSource() {

     SimpleDriverDataSource dataSource = new SimpleDriverDataSource();
     try {
       dataSource.setDriverClass(com.microsoft.sqlserver.jdbc.SQLServerDriver.class);
       //dataSource.setDriverClassName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
       dataSource.setUrl("jdbc:sqlserver://server;databaseName=db1;integratedSecurity=true;");

     } catch (Exception e) {

     }
     return dataSource;
   }

   @Bean
   public DataSourceTransactionManager transactionManager() {
     return new DataSourceTransactionManager(dataSource());
   }

   @Bean
   public SqlSessionFactoryBean sqlSessionFactory() throws Exception {
     SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();

     sqlSessionFactoryBean.setTypeAliasesPackage("com.test.domain");

     sqlSessionFactoryBean.setDataSource(dataSource());
     return sqlSessionFactoryBean;
   }
}

我解决了这个问题。我的问题不在于 Mybatis。它是 Spring。 This link Spring 文档说“...将您的主应用程序 class 放在其他 classes 之上的根包中”。

我没有那样做。一旦我移动了应用程序 class(用 SpringBootApplication 注释),@MapperScan 注释就起作用了。