/** * 自定义插件 */ @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); // 添加自动扫描插件 // ... }
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); 这是我写的
然后并没有出来提示说连没连上 并不像eova自带的那样有提示 自己随便写了个查询 发现所有都404了。。
好吧 是加上数据源就开始 全部404
/** * 自定义插件 */ @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这么写是不是哪里错了。。
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
那个我改了下输出语句。。改成 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 是我新加的现在还是不太懂 求大神
我以为是相同的不行 所以新建了一个用户 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 还是报错
mysql 我已经测试了 完全没问题。。 现在继续看oracle
目前这样用的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); // 添加自动扫描插件 // ... // 添加自动扫描插件 // ... }
创建数据源都一样,除了方言,URL,帐号,密码,剩下如果还有问题就是对数据库本省不熟练,如果Oracle操作觉得有难度可以换成Mysql!
已经找到问题 需要添加 dp.setValidationQuery("select 1 from dual"); 即可 默认的是错误的
目前又碰到一个问题 oracle中的char字段 读取为 false 如何解决呢
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)
这样啊 谢谢! 再问个问题。。。 如果 我要自己加JDBC的话 也是在这里加么 会起冲突么 因为数据库我无法更改
DIY JDBC 以自己的测试结果为准 理论上不冲突,前提是你能掌控,否则还是不建议自己搞!
这样啊 项目比较急。。。只能先试试了 谢谢!
已经按照该方法添加oracle数据源成功!但是注意要在本地mvn仓库添加oracle的lib先。
@zerofire 请问一下自定义插件该放在哪里,plugins里面吗?可这放的不应该是前端吗?新手该学eova
@zerofire 已经找到
@zerofire 为什么我用mysql数据库运行时DruidPlugin会报错,空指针