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类似,可以参考一下。
  • 相关阅读:
    EasyUI问题小结(不定期更新·······)
    windows服务与前台交互
    C#捕获Windows窗体控件
    C#操作AD域中计算机
    远程桌面 Rdp文件的生成
    正则匹配的例子
    Nodejs中npm install 命令的问题
    Windows下使用curl命令
    关于PostmanURL中不能传递中文的问题
    MyBatis_Study_004(动态代理)
  • 原文地址:https://www.cnblogs.com/learningJAVA/p/7490175.html
Copyright © 2011-2022 走看看