多数据源配置 (SQL server)

多数据源配置 (两个SQL server数据库)

配置文件

  1. 数据库配置文件

jdbc.driverClassName=com.microsoft.sqlserver.jdbc.SQLServerDriver

##数据源1
jdbc.url1=jdbc:sqlserver://ip地址:端口;databaseName=数据库名称
jdbc.username1=用户名
jdbc.password1=密码

##数据源2
jdbc.url2=jdbc:sqlserver://ip地址:端口;databaseName=数据库名称;allowMultiQueries=true
jdbc.username2=用户名
jdbc.password2=密码

druid.pool.size.max=20
druid.pool.size.min=3
druid.pool.size.init=3
  1. applicationContext.xml
 <!--1、配置数据库相关参数-->
    <context:property-placeholder location="classpath:jdbc.properties" ignore-unresolvable="true"/>

    <!--2、 数据源druid -->
    <!-- 数据源1 start -->
    <bean id="dataSource1" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
        <property name="driverClassName" value="${jdbc.driverClassName}"/>
        <property name="url" value="${jdbc.url1}"/>
        <property name="username" value="${jdbc.username1}"/>
        <property name="password" value="${jdbc.password1}"/>
    </bean>
    <!-- 数据源1 end -->
    <!-- 数据源2 start -->
    <bean id="dataSource2" class="org.springframework.jdbc.datasource.DriverManagerDataSource" >
        <property name="driverClassName" value="${jdbc.driverClassName}"/>
        <property name="url" value="${jdbc.url2}"/>
        <property name="username" value="${jdbc.username2}"/>
        <property name="password" value="${jdbc.password2}"/>
    </bean>
    <!-- 数据源2 end -->

    <bean id="dynamicDataSource" class="cn.khdl.source.DynamicDataSource">
        <property name="targetDataSources">
            <map key-type="java.lang.String">
                <entry key="ds1" value-ref="dataSource1"/>
                <entry key="ds2" value-ref="dataSource2"/>
            </map>
        </property>
        <!--默认数据源-->
        <property name="defaultTargetDataSource" ref="dataSource2"/>
    </bean>


    <bean id="sqlSessionFactory" class="org.mybatis.spring.SqlSessionFactoryBean">
        <property name="dataSource" ref="dynamicDataSource"/>
        <property name="typeAliasesPackage" value="cn.duoshujvyuan.domain"/>
        <property name="mapperLocations" value="classpath:cn.duoshujvyuan.mapper/*.xml"/>
    </bean>

Java文件

  1. DynamicDataSource.java
/**
 * @Description : 继承AbstractRoutingDataSource并重写determineCurrentLookupKey方法
 * @Author :  shieryue
 * @Date: 2022-03-01
 */
public class DynamicDataSource extends AbstractRoutingDataSource {
    @Override
    protected Object determineCurrentLookupKey() {
        return DataSourceHolder.getDataSources();
    }
}
  1. DataSourceEnum.java (枚举)
public enum DataSourceEnum {
    DS1("ds1"), DS2("ds2");

    private String key;

    DataSourceEnum(String key) { this.key = key; }

    public String getKey() { return key; }

    public void setKey(String key) {  this.key = key; }
}
  1. DataSourceHolder.java
/**
 * @Description : 用于持有当前线程中使用的数据源标识
 * @Author :  shieryue
 * @Date: 2022-03-01
 */
public class DataSourceHolder {
    private static final ThreadLocal<String> dataSources = new ThreadLocal<String>();

    public static void setDataSources(String dataSource) {
        dataSources.set(dataSource);
    }

    public static String getDataSources() {
        return dataSources.get();
    }
}
  1. 业务层
/**
 * @Description :
 * @Author :  shieryue
 * @Date: 2022-03-01
 */
@Service("userService")
public class UserServiceImpl implements UserService {
    @Autowired
    private UserDao userDao;
    @Override
    public String findUserByUserId(String userid) {
        DataSourceHolder.setDataSources(DataSourceEnum.DS1.getKey());
        return userDao.findUserByUserId(userid);
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值