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 注释就起作用了。
我正在尝试为 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 注释就起作用了。