Как я могу создать SqlSessionFactory(компонент) из свойств MybatisProperties?

#mybatis #spring-mybatis

Вопрос:

Я пытаюсь настроить свое приложение Spring Boot с несколькими базами данных, и мне удалось найти хороший способ для такого DataSource вида.

     @DataSourceDb1
    @Bean
    @ConfigurationProperties(prefix = "application.db1.datasource.hikari")
    public DataSource dataSourceDb1(@DataSourceDb1 DataSourceProperties dataSourceProperties) {
        return dataSourceProperties
                .initializeDataSourceBuilder()
                .type(HikariDataSource.class)
                .build();
    }
 

Теперь я пытаюсь настроить a SqlSessionFactory(Bean) из экземпляра MybatisProperties , загруженного из application.yaml .

 application:
  db1:
    datasource: # irrelevant
    jpa:        # irrelevant
    mybatis:
      configuration:
        map-underscore-to-camel-case: true
      configuration-properties:
        a: b    # just for debugging
      mapper-locations: db1/sql/mapper/**/*.xml
 

Я успешно загрузил MybatisProperties вот так.

     @SqlMapperDb1
    @Bean
    @ConfigurationProperties(prefix = "application.db1.mybatis")
    MybatisProperties mybatisPropertiesDb1() {
        final MybatisProperties mybatisProperties = new MybatisProperties();
        return mybatisProperties;
    }
 

И я также достиг следующего состояния.

     @SqlMapperDb1
    @Bean
    public SqlSessionFactory sqlSessionFactoryDb1(
            @Db1 final DataSource dataSource,
            @SqlMapperDb1 final MybatisProperties mybatisProperties) throws Exception {
        final SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        //factoryBean.setVfs(SpringBootVFS.class);
        factoryBean.setDataSource(dataSource);
        factoryBean.setConfiguration(mybatisProperties.getConfiguration());
        factoryBean.setConfigurationProperties(mybatisProperties.getConfigurationProperties());

        // TODO: set more from the properties // <<<<<<<<<<<-----!!!!!

        return factoryBean.getObject();
    }
 

Есть ли какой-нибудь хороший способ настроить factoryBean из mybatisProperties того, что определено в application.yaml файле?

Так же, как и то, как

         return dataSourceProperties
                .initializeDataSourceBuilder()
                .type(HikariDataSource.class)
                .build();