数据库主从分离的常见实现方式,以及程序内部实现的两种思路

数据库主从分离通常有几类实现方式,一是在应用程序内区分主从,二是新增一层数据库代理服务器,在应用服务器和数据库服务器之间根据SQL区分主从。

前者的好处是可以不用新增额外的服务器开销,后者的好处是可以不用对项目程序逻辑做任何的改动。

而从应用程序内部区分主从,又有两种方式,一是根据包名区分,二是根据自定义注解区分

一、根据包名区分主从

根据包名区分大概就是把操作主库的Mapper和xml文件放到一类文件夹上,把查询从库的Mapper和xml文件放在另一个目录的文件夹下。

里面的关键点在于MasterDataSourceConfig和ClusterDataSourceConfig,这两个用于声明和扫描对于目录下的dao和mapper.xml文件,并且返回对于的数据库链接,具体代码如下:

package com.tlgg.druid;

import com.alibaba.druid.pool.DruidDataSource;
import org.apache.ibatis.session.SqlSessionFactory;
import org.mybatis.spring.SqlSessionFactoryBean;
import org.mybatis.spring.annotation.MapperScan;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.jdbc.datasource.DataSourceTransactionManager;

import javax.sql.DataSource;

/**
 * 从库数据源配置
 */
@Configuration
// 扫描 Mapper 接口并容器管理
@MapperScan(basePackages = ClusterDataSourceConfig.PACKAGE, sqlSessionFactoryRef = "clusterSqlSessionFactory")
public class ClusterDataSourceConfig {
    /**
     * 精确到 cluster 目录,以
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值