首页 java三层 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

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

 

 

免责声明:文章内容不代表本站立场,本站不对其内容的真实性、完整性、准确性给予任何担保、暗示和承诺,仅供读者参考,文章版权归原作者所有。如本文内容影响到您的合法权益(内容、图片等),请及时联系本站,我们会及时删除处理。

为您推荐

Hibernate 中对象 set 属性时自动保存入库的问题

Hibernate 中对象 set 属性时自动保存入库的问题

遇到这个问题了 背景 在某个项目中,通过 Heibernate 查出某个对象后,对属性进行了 set 操作,并没有进行 ...
hibernate中@DynamicInsert和@DynamicUpdate

hibernate中@DynamicInsert和@DynamicUpdate

在Hibernate中可以利用@DynamicInsert和@DynamicUpdate生成动态SQL语句,即在插入和修...
redis简单命令

redis简单命令

linux进入redis redis-cli -p 6379 查询 config get requirepass # 对...
“”字符串解析为date报错

“”字符串解析为date报错

  Spring3MVC中Controller层接受前端页面的参数有一种情况: @RequestMapping...
Restrictions 非空验证

Restrictions 非空验证

Hibernate-Restrictions用法 Restrictions or用法   criteria.a...
返回顶部