jfinal多數據源ActiveRecordPlugin


因為項目需要從多個數據庫取數據,所以需要配置多個數據源

嘗試了ActiveRecordPlugin和DruidPlugin的多數據源,但是因為DruidPlugin在本地一直報錯一個很奇怪的語法錯誤,所以就選用了ActiveRecordPlugin

總的來說就是多個數據源配置多個ActiveRecordPlugin

 

直接使用如下代碼即可,不過因為我是太多的數據源不想一個個定義plugin,所以就選用循環讀取文件的形式

int i=0;
        while(true){
            if(PropKit.get("jdbcUrl"+i)==null){
                break;
            }else{
                C3p0Plugin cp = new C3p0Plugin(
                        PropKit.get("jdbcUrl"+i), 
                        PropKit.get("user"+i), 
                        PropKit.get("password"+i),  
                        PropKit.get("driver"+i));  
                cp.setInitialPoolSize(3);  
                cp.setMaxIdleTime(10);  
                cp.setMinPoolSize(3);  
                cp.setMaxIdleTime(6);  
                me.add(cp);  
                
                ActiveRecordPlugin arp = null;
                if(i>0){
                    arp = new ActiveRecordPlugin("db"+i,cp);  
                }else{
                    arp = new ActiveRecordPlugin(cp);  
                }
//                arp2.setDialect(new AnsiSqlDialect()); 連接 sql2008 特有的解決字符 問題
                if(PropKit.get("driver"+i).indexOf("mysql")>-1){
                    arp.setDialect(new MysqlDialect());///mysql
                } else{
                    arp.setDialect(new SqlServerDialect());///sqlserver
                }
                me.add(arp);  
                
                //配置數據表映射寫到一個文件中
                if(PropKit.get("state"+i).indexOf("pro")>-1){
                    DbMappingKit.mapping(arp);
                }else if(PropKit.get("state"+i).indexOf("fb")>-1){
                    FbMappingKit.mapping(arp);
                }else if(PropKit.get("state"+i).indexOf("wx")>-1){
                    WxMappingKit.mapping(arp);
                }else if(PropKit.get("state"+i).indexOf("center")>-1){
                    TaskCenterMappingKit.mapping(arp);
                }
                
            }
            i++;
        }

其中

arp = new ActiveRecordPlugin("db"+i,cp); 是給除第一個以外的其他鏈接建立連接別名。
我們常用的DB.update(sql),默認使用么有別名的第一個數據源。

Db.use("db1").update(sql); 這樣可以使用其他數據源

與http://jingyan.baidu.com/article/7f41ecec3b2b0e593d095c35.html類似,可以參考一下。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM