zoukankan      html  css  js  c++  java
  • 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类似,可以参考一下。
  • 相关阅读:
    文件路径选择中的三态逻辑
    .net版本号
    使用MSBuild编译vs多个解决方案
    CEF截图
    使用SharpZIpLib写的压缩解压操作类
    软件试用期设置
    list转datatable
    excel 导入
    网站登录简单验证码
    UEditor编辑器
  • 原文地址:https://www.cnblogs.com/learningJAVA/p/7490175.html
Copyright © 2011-2022 走看看