如何向eova中添加新的数据源呢
zerofire 发布于104月前 21答/4869阅

我想实现xx功能:
添加个数据库

过程中遇到的问题:
知道在plugin中添加 但是不知道格式是什么

我的分析过程如下:

可能和jfinal相同 但是读取配置文件不太清楚 正在测试


[沙发] Jieven
    /**
     * 自定义插件
     */
    @Override
    protected void plugin(Plugins plugins) {
        // 数据源Key
        String datasource = "oss";
         
        // 添加数据源
        String ossUrl, ossUser, ossPwd;
        ossUrl = props.get("oss_url");
        ossUser = props.get("oss_user");
        ossPwd = props.get("oss_pwd");
         
        WallFilter wall = new WallFilter();
        wall.setDbType(JdbcUtils.MYSQL);
         
        DruidPlugin dp = new DruidPlugin(ossUrl, ossUser, ossPwd);
        dp.addFilter(new StatFilter());
        dp.addFilter(wall);
         
        ActiveRecordPlugin arp = new ActiveRecordPlugin(datasource, dp);
        // 方言
        arp.setDialect(new MysqlDialect());
        // 事务级别
        arp.setTransactionLevel(Connection.TRANSACTION_REPEATABLE_READ);
        // 统一全部默认小写
        arp.setContainerFactory(new CaseInsensitiveContainerFactory(true));
        // 是否显示SQL
        arp.setShowSql(true);
        System.out.println("load data source:" + ossUrl + "/" + ossUser);
 
        // arp.addMapping("xxx", Xxx.class);
        plugins.add(dp).add(arp);
         
        // 注册数据源
        dataSources.add(datasource);
         
        // 添加自动扫描插件
         
        // ...
    }
最佳
[地板] zerofire
  C3p0Plugin cp = new C3p0Plugin("jdbc:oracle:thin:@127.0.0.1:1521:ORCL","user", "user","oracle.jdbc.driver.OracleDriver"); 
  plugins.add(cp);
 ActiveRecordPlugin arp = new ActiveRecordPlugin(cp);
        plugins.add(arp);
 ActiveRecordPlugin arp = new ActiveRecordPlugin(cp);
        plugins.add(arp);
 ActiveRecordPlugin arp = new ActiveRecordPlugin(cp);
        plugins.add(arp);
这是我写的  
[地毯] zerofire
然后并没有出来提示说连没连上 并不像eova自带的那样有提示 自己随便写了个查询 发现所有都404了。。
[4楼] zerofire
好吧 是加上数据源就开始 全部404
[5楼] zerofire
  /**
     * 自定义插件
     */
    @Override
    protected void plugin(Plugins plugins) {
        // 添加数据源
    	 String datasource = "oss";
         
         // 添加数据源
         String ossUrl, ossUser, ossPwd;
         ossUrl = props.get("oss_url");
         ossUser = props.get("oss_user");
         ossPwd = props.get("oss_pwd");
          
         WallFilter wall = new WallFilter();
         wall.setDbType(JdbcUtils.ORACLE);
          
         DruidPlugin dp = new DruidPlugin(ossUrl, ossUser, ossPwd);
         dp.addFilter(new StatFilter());
         dp.addFilter(wall);
          
         ActiveRecordPlugin arp = new ActiveRecordPlugin(datasource, dp);
         // 方言
         arp.setDialect(new OracleDialect());
         // 事务级别
         arp.setTransactionLevel(Connection.TRANSACTION_REPEATABLE_READ);
         // 统一全部默认小写
         arp.setContainerFactory(new CaseInsensitiveContainerFactory(true));
         // 是否显示SQL
         arp.setShowSql(true);
         System.out.println("load data source:" + ossUrl + "/" + ossUser);
  
          arp.addMapping("mytest", Mytest.class);
         plugins.add(dp).add(arp);
          
         // 注册数据源
         dataSources.add(datasource);
          
         // 添加自动扫描插件

我oracle这么写是不是哪里错了。。  
[6楼] zerofire
load data source:jdbc:oracle:thin:@127.0.0.1:1521:ORCL/eovadata
load eova datasource:jdbc:oracle:thin:@127.0.0.1:1521:ORCL/eovadata
load data source:jdbc:oracle:thin:@127.0.0.11:1521:ORCL/eovadata
04-21 23:36:20[INFO]{dataSource-1} inited
04-21 23:36:20[INFO]{dataSource-2} inited
04-21 23:36:20[ERROR]invalid oracle validationQuery. select 1, may should be : select 1 FROM DUAL
04-21 23:36:20[ERROR]init datasource error, url: jdbc:oracle:thin:@127.0.0.11:1521:ORCL 


这是错误 是不是还有什么没写。。才会出现两个load data source:jdbc:oracle
[7楼] zerofire
那个我改了下输出语句。。改成
load data source:jdbc:oracle:thin:@127.0.0.1:1521:ORCL/eovadata
load eova datasource:jdbc:oracle:thin:@127.0.0.1:1521:ORCL/eovadata
load my source:jdbc:oracle:thin:@127.0.0.1:1521:ORCL/eovadata
04-21 23:39:46[INFO]{dataSource-1} inited
04-21 23:39:47[INFO]{dataSource-2} inited
04-21 23:39:47[ERROR]invalid oracle validationQuery. select 1, may should be : select 1 FROM DUAL
04-21 23:39:47[ERROR]init datasource error, url: jdbc:oracle:thin:@127.0.0.1:1521:ORCL
my 是我新加的现在还是不太懂 求大神
[8楼] zerofire
我以为是相同的不行 所以新建了一个用户 liu
load data source:jdbc:oracle:thin:@127.0.0.1:1521:ORCL/eovadata
load eova datasource:jdbc:oracle:thin:@127.0.0.1:1521:ORCL/eovadata
load my source:jdbc:oracle:thin:@127.0.0.1:1521:ORCL/liu
04-21 23:53:16[INFO]{dataSource-1} inited
04-21 23:53:16[INFO]{dataSource-2} inited
04-21 23:53:16[ERROR]invalid oracle validationQuery. select 1, may should be : select 1 FROM DUAL
04-21 23:53:16[ERROR]init datasource error, url: jdbc:oracle:thin:@127.0.0.1:1521:ORCL
java.sql.SQLException: validateConnection false
还是报错
[9楼] zerofire
mysql 我已经测试了 完全没问题。。 现在继续看oracle 
[10楼] zerofire
 目前这样用的ORACLE的 启动成功 明日接着测试是否真正连接上 撑不住了。。困死。。

/**
     * 自定义插件
     */
    @Override
    protected void plugin(Plugins plugins) {
        // 添加数据源
    	 String datasource = "oss";
         
         // 添加数据源
         String ossUrl, ossUser, ossPwd;
         ossUrl = props.get("oss_url");
         ossUser = props.get("oss_user");
         ossPwd = props.get("oss_pwd");
          
         WallFilter wall = new WallFilter();
         wall.setDbType(JdbcUtils.ORACLE);
          
         DruidPlugin dp = new DruidPlugin(ossUrl, ossUser, ossPwd);
         dp.addFilter(new StatFilter());
         dp.addFilter(wall);
          
         ActiveRecordPlugin arp = new ActiveRecordPlugin(datasource, dp);
         // 方言
         arp.setDialect(new OracleDialect());
       
         // 统一全部默认小写
         arp.setContainerFactory(new CaseInsensitiveContainerFactory());
         // 是否显示SQL
         arp.setShowSql(true);
         System.out.println("load data source:" + ossUrl + "/" + ossUser);
  
         // arp.addMapping("xxx", Xxx.class);
         plugins.add(dp).add(arp);
          
         // 注册数据源
         dataSources.add(datasource);
          
         // 添加自动扫描插件
          
         // ...
       
    

        // 添加自动扫描插件
        
        // ...
    }
[11楼] Jieven
创建数据源都一样,除了方言,URL,帐号,密码,剩下如果还有问题就是对数据库本省不熟练,如果Oracle操作觉得有难度可以换成Mysql!
[12楼] zerofire
已经找到问题 需要添加
dp.setValidationQuery("select 1 from dual");
即可 默认的是错误的
[13楼] zerofire
目前又碰到一个问题  oracle中的char字段 读取为 false 如何解决呢
[14楼] Jieven
EovaConfig 已经默认定义好了!
} else if (JdbcUtils.ORACLE.equalsIgnoreCase(dbType)) {
			dialect = new OracleDialect();
			((DruidPlugin) dp).setValidationQuery("select 1 FROM DUAL");

Eova中默认使用Char(1) 强制为Boolean,其它的可以是Char(2) 或者别的类型比如Varchar(1),总之 
非Boolean 不要用char(1),类似mysql tinyint(1)
[15楼] zerofire
这样啊  谢谢!  再问个问题。。。 如果 我要自己加JDBC的话 也是在这里加么 会起冲突么 因为数据库我无法更改
[16楼] Jieven
DIY JDBC 以自己的测试结果为准 理论上不冲突,前提是你能掌控,否则还是不建议自己搞!
[17楼] zerofire
这样啊 项目比较急。。。只能先试试了 谢谢!
[18楼] dwock
已经按照该方法添加oracle数据源成功!但是注意要在本地mvn仓库添加oracle的lib先。
[19楼] 菜鸟新手请多指教
@zerofire 请问一下自定义插件该放在哪里,plugins里面吗?可这放的不应该是前端吗?新手该学eova
[20楼] 菜鸟新手请多指教
@zerofire 已经找到
[21楼] 菜鸟新手请多指教
@zerofire 为什么我用mysql数据库运行时DruidPlugin会报错,空指针
提交评论