Как использовать параметр mybatis.mapper-location в Spring Boot application.yml в среде с несколькими источниками данных?
Я устанавливаю код, как показано ниже.
это мое окружение.
spring-boot 2.1.2
multi datasource using hikariCp
это мое приложение .yml
mybatis:
mapper-locations: 'classpath:mybatis/test/*.xml'
type-aliases-package: com.test
configuration:
cache-enabled: true
lazy-loading-enabled: true
multiple-result-sets-enabled: true
use-column-label: false
default-statement-timeout: 65000
map-underscore-to-camel-case: true
spring.datasource:
test1:
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
jdbc-url: jdbc:log4jdbc:sqlserver://{SERVER};databaseName={DB NAME};sendStringParametersAsUnicode=false
username: {USER}
password: '{PW}'
test2:
driver-class-name: net.sf.log4jdbc.sql.jdbcapi.DriverSpy
jdbc-url: jdbc:log4jdbc:sqlserver://{SERVER};databaseName={DB NAME};sendStringParametersAsUnicode=false
username: {USER}
password: '{PW}'
это файл .java конфигурации пружины
@Configuration
public class DataSourceConfig {
@Bean(name = "test1DataSource")
@Primary
@ConfigurationProperties(prefix = "spring.datasource.test1")
public DataSource test1DataSource() {
return DataSourceBuilder.create()
//.type(HikariDataSource.class)
.build();
}
@Bean(name = "sqlTest1SessionFactory")
public SqlSessionFactory sqlTest1SessionFactory(@Qualifier("test1DataSource") DataSource test1DataSource, ApplicationContext applicationContext) throws Exception {
SqlSessionFactoryBean sqlSessionFactoryBean = new SqlSessionFactoryBean();
sqlSessionFactoryBean.setDataSource(test1DataSource);
//sqlSessionFactoryBean.setConfigLocation(applicationContext.getResource("classpath:config/testConfig.xml"));
//sqlSessionFactoryBean.setMapperLocations(applicationContext.getResources("classpath:mybatis/test/*.xml"));
return sqlSessionFactoryBean.getObject();
}
@Bean(name = "sqlTest1SessionTemplate")
public SqlSessionTemplate sqlTest1SessionTemplate(SqlSessionFactory sqlTest1SessionFactory) throws Exception {
return new SqlSessionTemplate(sqlTest1SessionFactory);
}
}
есть код ошибки.
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is org.mybatis.spring.MyBatisSystemException: nested exception is org.apache.ibatis.exceptions.PersistenceException:
### Error querying database. Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for com.test.**
### Cause: java.lang.IllegalArgumentException: Mapped Statements collection does not contain value for com.test.**
Когда я раскомментирую ('// sqlSessionFactoryBean.setMapperLocations'), он работает нормально, поэтому в значении пути нет опечаток.
Почему произошла эта ошибка?