乐趣区

关于ssm:ssm-多数据源

  • 1th xml 配置

<bean name="dataSource_jeecg" class="com.alibaba.druid.pool.DruidDataSource"
        init-method="init" destroy-method="close">
略
<bean>

    <!-- 数据源汇合 -->
    <bean id="dataSource"
        class="org.jeecgframework.core.extend.datasource.DynamicDataSource">
        <property name="targetDataSources">
            <map key-type="java.lang.String">
                <!---->
                <entry key="push" value-ref="dataSource_jeecg" />
                <!---->
                <entry key="defau" value-ref="mapdataSource" />
            </map>
        </property>
        <!-- 默认数据源 -->
        <property name="defaultTargetDataSource" ref="dataSource_jeecg" />
    </bean>
  • 2th, java 配置类
public class DynamicDataSourceGlobal {

    public static final String DATASOURCE_PUSH="defaut";  // 企业数据库
    public static final String DATASOURCE_DEFAU="defaut02";// 海关数据库
}
-- 设置类
public class DynamicDataSourceHolder {
    // 线程本地环境
    @SuppressWarnings("rawtypes")
    private static final ThreadLocal contextHolder = new ThreadLocal();

    // 设置数据源类型
    @SuppressWarnings("unchecked")
    public static void setDataSourceType(String dataSourceType) {contextHolder.set(dataSourceType);
    }

    // 获取数据源类型
    public static String getDataSourceType() {return (String) contextHolder.get();}

    // 革除数据源类型
    public static void clearDataSourceType() {contextHolder.remove();
    }
}
  • 3th service 调用

DynamicDataSourceHolder.setDataSourceType(DynamicDataSourceGlobal.DATASOURCE_PUSH);
jdbcTemplate.queryForList(sql);

具体的业务或则读写拆散应用

退出移动版