程序员一代码搬运工
【Java学习心得和Java学习技术个人总结】

java切换数据源测试(思路)

java数据源切换。

今天碰到了。

 

先说下原理。。

 

首先 ,必要的条件

 

数据库里面的表结构是一样的。。

只是数据库名字不一样,

而且这名字也是有规律(无规律也行)的。。

因为数据库多

所以读取的时候需要用到数据源切换。。

 

举个例子:

 

就说下

例如我经常玩的dnf游戏。。

 

dnf游戏 不是有很多区吗,

有福建一区,福建二区,福建三区

他们的表结构都是一样的。。

不一样的话,

游戏就同步了。。

 

切换数据源相当于换服

 

 

具体做法

 

可以根据查询 含某个方法时进行切换

 

用这个类  ComboPooledDataSource  进行数据切换

 

这里只截取一段。。

String tUrl = "jdbc:mysql://"+动态参数+"/"+动态参数+"?useUnicode=true&characterEncoding=utf-8";
        pooledDataSource.setDriverClass("com.mysql.jdbc.Driver");
        pooledDataSource.setJdbcUrl(tUrl);
        pooledDataSource.setUser(用户名字);
        pooledDataSource.setPassword(密码);

 

// service方法执行之前被调用

重要的是 利用aop 判断 参数进行转换。。

 

 

public void before(Method method, Object[] args, Object target) throws Throwable {  
        String sourceName="master";
    
        if(method.getName().toLowerCase().indexOf("yq1012")>=0){
              
           if(args.length>1){
               Object obj =  args[args.length-1];
               if (obj instanceof String && obj.toString().toLowerCase().startsWith("数据库名字_标识")) {
                   sourceName=obj.toString().toLowerCase();
               }   
            }
        }
    
        if(sourceName!=null){
           DataSourceSwitcher.setDataSource(sourceName); 
         }else{
           DataSourceSwitcher.setMaster();
         }
   }

 

 

先判断执行的方法有没有包含yq1012

如果有的话,再根据参数去判断是不是需要切换数据源

 

 

赞(0)
未经允许不得转载:程序员一代码搬运工 » java切换数据源测试(思路)
分享到: 更多 (0)