複数のデータベースの春ブーツMyBatisの設定

MyBatisの-config.xmlには、本明細書に記載の構成では、春の起動を設定するためのクラスを使用して、データベースの様々なサポートするように構成されています。

1.設定application.yml

# mybatis配置
mybatis:
  check-config-location: false
  type-aliases-package: ${base.package}.model
  configuration:
    map-underscore-to-camel-case: true
    # 二级缓存的总开关
    cache-enabled: false
  mapper-locations: classpath:mapping/*.xml

2.構成クラスのデータソースを追加します。

/**
 * 数据源配置
 * @author simon
 * @date 2019-02-18
 */
@Configuration
public class DataSourceConfig {
    @Value("${mybatis.mapper-locations}")
    private String mapperLocations;

    @Primary
    @Bean
    @ConfigurationProperties("spring.datasource.druid")
    public DataSource dataSource(){
        return DruidDataSourceBuilder.create().build();
    }

    @Bean
    public JdbcTemplate jdbcTemplate(){
        return new JdbcTemplate(dataSource());
    }

    @Bean
    public DatabaseIdProvider databaseIdProvider(){
        DatabaseIdProvider databaseIdProvider = new VendorDatabaseIdProvider();
        Properties p = new Properties();
        p.setProperty("Oracle", "oracle");
        p.setProperty("MySQL", "mysql");
        p.setProperty("PostgreSQL", "postgresql");
        p.setProperty("DB2", "db2");
        p.setProperty("SQL Server", "sqlserver");
        databaseIdProvider.setProperties(p);
        return databaseIdProvider;
    }

    @Bean
    public SqlSessionFactoryBean sqlSessionFactoryBean() throws Exception {
        SqlSessionFactoryBean factoryBean = new SqlSessionFactoryBean();
        factoryBean.setDataSource(dataSource());
        factoryBean.setDatabaseIdProvider(databaseIdProvider());
        factoryBean.setMapperLocations(new PathMatchingResourcePatternResolver().getResources(mapperLocations));
        return factoryBean;
    }
}

mapper.xml 3.

方法1

  <select id="findAuthorityByUrl" resultType="java.lang.String" databaseId="mysql">
    SELECT
      group_concat( tsma.authority ) as authority
    FROM
        t_side_menu tsm
        LEFT JOIN t_side_menu_authority tsma ON tsm.id = tsma.side_menu_id
  </select>

    <select id="findAuthorityByUrl" resultType="java.lang.String" databaseId="postgresql">
        SELECT
        string_agg( tsma.authority, ',') as authority
        FROM
        t_side_menu tsm
        LEFT JOIN t_side_menu_authority tsma ON tsm.id = tsma.side_menu_id
    </select>

方法2

  <select id="selectByPids" parameterType="String" resultMap="SuperResultMap">
    SELECT
        tsm.*,
      <if test="_databaseId == 'mysql'">
          group_concat( tsma.authority ) as authority
      </if>
      <if test="_databaseId == 'postgresql'">
          string_agg( tsma.authority, ',') as authority
      </if>
    FROM
        t_side_menu tsm
        LEFT JOIN t_side_menu_authority tsma ON tsm.id = tsma.side_menu_id
    WHERE pid IN (#{pids})
    GROUP BY
        tsm.id
  </select>

余談

興味のある方は、与えてくださいoauthsererプロジェクトにスターを。春ブーツのOAuth2ベースoauthserverは、完全なスタンドアロン型マイクロのOAuth2サーバーサービスです。このプロジェクトの目的は、マイクロのOAuth2 Serverサービスを取得することができ、データベース接続情報を変更し、データテーブルを作成するために必要なだけです。

オリジナル住所ます。https://segmentfault.com/a/1190000018193491は、utm_source =タグ、最新の?

おすすめ

転載: www.cnblogs.com/jpfss/p/11242716.html