最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

使用Spring多數(shù)據(jù)源配置

 更新時間:2024年07月15日 08:50:19   作者:程序三兩行  
這篇文章主要介紹了使用Spring多數(shù)據(jù)源配置方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

Spring多數(shù)據(jù)源配置

Spring多數(shù)據(jù)源配置,這里持久層框架使用mybatis,集成Mybatis多數(shù)據(jù)源有兩種方式:

1、創(chuàng)建多個SqlSessionFactory,掃描每個SqlSessionFactoryBean對應的包,形成了每個Factory對應一個數(shù)據(jù)源。

2、創(chuàng)建一個SqlSessionFactory,通過動態(tài)切換數(shù)據(jù)源對象,達到多數(shù)據(jù)源操作功能。

方式一:創(chuàng)建多個SqlSessionFactory

  • 整合mysql+clickhouse雙數(shù)據(jù)源
<!--mybatis + mysql + druid-->
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis-spring</artifactId>
      <version>2.0.6</version>
    </dependency>
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>
      <version>1.1.23</version>
    </dependency>
    <dependency>
      <groupId>org.mybatis</groupId>
      <artifactId>mybatis</artifactId>
      <version>3.4.5</version>
    </dependency>
    <dependency>
      <groupId>mysql</groupId>
      <artifactId>mysql-connector-java</artifactId>
      <version>5.1.49</version>
    </dependency>
    <!--clickhouse-->
    <dependency>
      <groupId>ru.yandex.clickhouse</groupId>
      <artifactId>clickhouse-jdbc</artifactId>
      <version>0.1.53</version>
    </dependency>
  • jdbc.properties
jdbc.driverClassName=com.mysql.jdbc.Driver
jdbc.master.url=jdbc:mysql://localhost:3306/test
jdbc.master.username=root
jdbc.master.password=root
jdbc.master.maxActive=10
jdbc.master.minIdle=5
jdbc.master.maxWait=10000
  • clickhouse.properties
clickhouse.driverClassName=ru.yandex.clickhouse.ClickHouseDriver
clickhouse.url=jdbc:clickhouse://localhost:8123/test
clickhouse.username=root
clickhouse.password=root
clickhouse.maxActive=10
clickhouse.minIdle=5
clickhouse.maxWait=10000
  • spring配置文件中配置多個數(shù)據(jù)源
<!--加載mysql+clickhouse配置文件-->
    <context:property-placeholder location="classpath:jdbc.properties"/>
    <context:property-placeholder location="classpath:clickhouse.properties"/>

    <!--=======================mysql數(shù)據(jù)源配置=======================-->
    <bean id="dataSource" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${jdbc.driverClassName}"/>
        <property name="url" value="${jdbc.master.url}"/>
        <property name="password" value="${jdbc.master.password}"/>
        <property name="username" value="${jdbc.master.username}"/>
        <property name="maxActive" value="${jdbc.master.maxActive}"/>
        <property name="maxWait" value="${jdbc.master.maxWait}"/>
        <property name="minIdle" value="${jdbc.master.minIdle}"/>
    </bean>
    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
        <property name="dataSource" ref="dataSource"/>
        <property name="typeAliasesPackage" value="com.demo.flash.price.redpot.entity"/>
        <property name="mapperLocations" value="classpath:mysql_mapper/*.xml"/>
        <property name="plugins">
            <set>
                <!--配置pageHelper 分頁插件-->
                <bean class="com.github.pagehelper.PageInterceptor">
                    <property name="properties">
                        <props>
                            <!--方言:-->
                            <prop key="helperDialect">mysql</prop>
                        </props>
                    </property>
                </bean>
            </set>
        </property>
    </bean>
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.demo.flash.price.redpot.mapperMysql"/>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactory"/>
    </bean>
    <bean id="transactionManager"
          class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSource"></property>
    </bean>
    <tx:annotation-driven transaction-manager="transactionManager" />

    <!--=======================clickhouse數(shù)據(jù)源配置=======================-->
    <bean id="dataSourceClickhouse" class="com.alibaba.druid.pool.DruidDataSource">
        <property name="driverClassName" value="${clickhouse.driverClassName}"/>
        <property name="url" value="${clickhouse.url}"/>
        <property name="password" value="${clickhouse.password}"/>
        <property name="username" value="${clickhouse.username}"/>
        <property name="maxActive" value="${clickhouse.maxActive}"/>
        <property name="maxWait" value="${clickhouse.maxWait}"/>
        <property name="minIdle" value="${clickhouse.minIdle}"/>
    </bean>
    <bean id="sqlSessionFactoryClickhouse" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="configLocation" value="classpath:mybatis-config.xml"/>
        <property name="dataSource" ref="dataSourceClickhouse"/>
        <property name="typeAliasesPackage" value="com.demo.flash.price.redpot.entity"/>
        <property name="mapperLocations" value="classpath:clickhouse_mapper/*.xml"/>
        <property name="plugins">
            <set>
                <!--配置pageHelper 分頁插件-->
                <bean class="com.github.pagehelper.PageInterceptor">
                    <property name="properties">
                        <props>
                            <!--方言:-->
                            <prop key="helperDialect">mysql</prop>
                        </props>
                    </property>
                </bean>
            </set>
        </property>
    </bean>
    <bean class="org.mybatis.spring.mapper.MapperScannerConfigurer">
        <property name="basePackage" value="com.demo.flash.price.redpot.mapperClickhouse"/>
        <property name="sqlSessionFactoryBeanName" value="sqlSessionFactoryClickhouse"/>
    </bean>
    <bean id="transactionManagerClickhouse"
          class="org.springframework.jdbc.datasource.DataSourceTransactionManager">
        <property name="dataSource" ref="dataSourceClickhouse"></property>
    </bean>
    <tx:annotation-driven transaction-manager="transactionManagerClickhouse" />

方式二:動態(tài)切換數(shù)據(jù)源對象

創(chuàng)建單個SqlSessionFactory,動態(tài)切換數(shù)據(jù)源對象 ,在Spring的jdbc包下有個支持動態(tài)數(shù)據(jù)源切換的抽象類AbstractRoutingDataSource,其中的抽象方法determineCurrentLookupKey需要我們自己來實現(xiàn),到底返回哪個數(shù)據(jù)源

public class DynamicDataSource extends AbstractRoutingDataSource {
 
	@Override
	protected Object determineCurrentLookupKey() {
        //在這里做數(shù)據(jù)源切換
		return DataSourceTypeManager.get();
	}
 
}
public class DataSourceTypeManager {
    //數(shù)據(jù)源保存
	private static final ThreadLocal<MybatisDataSource> dataSourceTypes = new ThreadLocal<MybatisDataSource>() {
		 
		@Override
		protected MybatisDataSource initialValue() {
			return MybatisDataSource.JKDSJ;
	}
	};
 
	public static MybatisDataSource get() {
		return dataSourceTypes.get();
	}
 
	public static void set(MybatisDataSource dataSourceType) {
		dataSourceTypes.set(dataSourceType);
	}
 
	public static void reset() {
		dataSourceTypes.set(MybatisDataSource.JKDSJ);
	}
 
}

總結

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • SpringBoot+VUE實現(xiàn)前后端分離的實戰(zhàn)記錄

    SpringBoot+VUE實現(xiàn)前后端分離的實戰(zhàn)記錄

    這篇文章主要介紹了SpringBoot+VUE實現(xiàn)前后端分離的相關資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-04-04
  • Java中ArrayList的工作原理詳解

    Java中ArrayList的工作原理詳解

    本文主要介紹了Java中ArrayList的工作原理,具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03
  • 從配置到監(jiān)控詳解SpringBoot微服務性能優(yōu)化實踐指南

    從配置到監(jiān)控詳解SpringBoot微服務性能優(yōu)化實踐指南

    Spring Boot憑借快速開發(fā)、自動化配置和豐富生態(tài),被廣泛用于構建微服務,本指南將聚焦Spring Boot微服務性能優(yōu)化,希望可以幫助大家掌握性能調(diào)優(yōu)要點
    2025-08-08
  • 如何解決idea安裝插件后報錯打不開問題

    如何解決idea安裝插件后報錯打不開問題

    這篇文章主要介紹了如何解決idea安裝插件后報錯打不開問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-06-06
  • Java 基礎語法讓你弄懂類和對象

    Java 基礎語法讓你弄懂類和對象

    C 語言是面向過程的,而 Java 是面向?qū)ο笫俏覀兂B牭降囊痪湓挘@章將帶你揭曉Java 基礎語法中類與對象到底是什么,需要的朋友請參考下文
    2021-08-08
  • springboot如何集成mysql

    springboot如何集成mysql

    這篇文章主要介紹了springboot如何集成mysql問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08
  • spring中Interceptor的使用小結

    spring中Interceptor的使用小結

    Spring Interceptor是Spring MVC提供的一種機制,用于在請求處理的不同階段插入自定義邏輯,通過實現(xiàn)HandlerInterceptor接口并注冊攔截器,可以控制攔截器的執(zhí)行順序和路徑匹配規(guī)則,下面就來詳細的介紹一下,感興趣的可以了解一下
    2025-12-12
  • Java 泛型總結(一):基本用法與類型擦除

    Java 泛型總結(一):基本用法與類型擦除

    本文主要介紹了Java泛型的使用以及類型擦除相關的問題。具有很好的參考價值。下面跟著小編一起來看下吧
    2017-03-03
  • java中VO和DTO之間的轉換實現(xiàn)

    java中VO和DTO之間的轉換實現(xiàn)

    本文主要介紹了java中VO和DTO之間的轉換實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-05-05
  • java容器類知識點詳細總結

    java容器類知識點詳細總結

    這篇文章主要介紹了java容器類知識點詳細總結,
    2019-06-06

最新評論

武定县| 长葛市| 泌阳县| 丰顺县| 怀远县| 兖州市| 资溪县| 栾川县| 连云港市| 临夏市| 南召县| 安乡县| 潮安县| 綦江县| 灵山县| 自治县| 萨迦县| 赤峰市| 鄂尔多斯市| 上林县| 平罗县| 浦东新区| 武威市| 望奎县| 丰城市| 昭平县| 金乡县| 哈巴河县| 长治县| 讷河市| 射阳县| 陆良县| 凉城县| 湟中县| 左权县| 伊川县| 江口县| 大英县| 浦县| 东港市| 尉氏县|