diff --git a/mybatis-flex-codegen/pom.xml b/mybatis-flex-codegen/pom.xml
index 302c6a6f..469d4a9f 100644
--- a/mybatis-flex-codegen/pom.xml
+++ b/mybatis-flex-codegen/pom.xml
@@ -32,12 +32,6 @@
${mybatis-flex.version}
-
- com.oracle.ojdbc
- ojdbc8
- 19.3.0.0
-
-
@@ -66,6 +60,14 @@
+
+ com.oracle.ojdbc
+ ojdbc8
+ 19.3.0.0
+ true
+
+
+
com.zaxxer
HikariCP
@@ -75,6 +77,15 @@
+
+ com.alibaba
+ druid
+ 1.2.18
+ compile
+ true
+
+
+
org.projectlombok
lombok
@@ -97,6 +108,8 @@
test
+
+
diff --git a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/dialect/IDialect.java b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/dialect/IDialect.java
index ae74beb1..eb0763fd 100644
--- a/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/dialect/IDialect.java
+++ b/mybatis-flex-codegen/src/main/java/com/mybatisflex/codegen/dialect/IDialect.java
@@ -15,19 +15,19 @@
*/
package com.mybatisflex.codegen.dialect;
+import com.alibaba.druid.pool.DruidPooledConnection;
import com.mybatisflex.codegen.config.GlobalConfig;
import com.mybatisflex.codegen.entity.Table;
import com.mybatisflex.core.util.ClassUtil;
import com.mybatisflex.core.util.StringUtil;
-
import com.zaxxer.hikari.pool.HikariProxyConnection;
+import oracle.jdbc.driver.OracleConnection;
+
import java.lang.reflect.Field;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.sql.SQLException;
-import java.util.function.Predicate;
-import oracle.jdbc.driver.OracleConnection;
/**
* 方言接口。
@@ -70,23 +70,26 @@ public interface IDialect {
@Override
protected ResultSet forRemarks(String schema, Table table, DatabaseMetaData dbMeta, Connection conn) throws SQLException {
- HikariProxyConnection hikariProxyConnection = (HikariProxyConnection) conn;
- Field delegate = ClassUtil.getFirstField(HikariProxyConnection.class, new Predicate() {
- @Override
- public boolean test(Field field) {
- return field.getName().equals("delegate");
- }
- });
- delegate.setAccessible(true);
- OracleConnection oc;
- try {
- oc = (OracleConnection) delegate.get(hikariProxyConnection);
- } catch (IllegalAccessException e) {
- throw new RuntimeException(e);
+ if (conn instanceof OracleConnection){
+ ((OracleConnection) conn).setRemarksReporting(true);
+ return dbMeta.getColumns(conn.getCatalog(), StringUtil.isNotBlank(schema) ? schema : dbMeta.getUserName(), table.getName(), null);
+ }else if ("com.zaxxer.hikari.pool.HikariProxyConnection".equals(conn.getClass().getName())){
+ return forRemarks(schema,table,dbMeta,getOriginalConn(HikariProxyConnection.class,"delegate",conn));
+ }else if ("com.alibaba.druid.pool.DruidPooledConnection".equals(conn.getClass().getName())){
+ return forRemarks(schema,table,dbMeta,getOriginalConn(DruidPooledConnection.class,"conn",conn));
}
- oc.setRemarksReporting(true);
- return dbMeta.getColumns(oc.getCatalog(), StringUtil.isNotBlank(schema) ? schema : dbMeta.getUserName(), table.getName(), null);
- }
+ return null;
+ }
+
+ private Connection getOriginalConn(Class> clazz,String attr,Connection conn){
+ Field delegate = ClassUtil.getFirstField(clazz, field -> field.getName().equals(attr));
+ try {
+ delegate.setAccessible(true);
+ return (Connection) delegate.get(conn);
+ } catch (IllegalAccessException e) {
+ throw new RuntimeException(e);
+ }
+ }
};
/**
diff --git a/mybatis-flex-codegen/src/test/java/com/mybatisflex/codegen/test/GeneratorTest.java b/mybatis-flex-codegen/src/test/java/com/mybatisflex/codegen/test/GeneratorTest.java
index e6a7244d..24081993 100644
--- a/mybatis-flex-codegen/src/test/java/com/mybatisflex/codegen/test/GeneratorTest.java
+++ b/mybatis-flex-codegen/src/test/java/com/mybatisflex/codegen/test/GeneratorTest.java
@@ -23,7 +23,6 @@ import com.mybatisflex.codegen.config.TableConfig;
import com.mybatisflex.codegen.config.TableDefConfig;
import com.mybatisflex.spring.service.impl.CacheableServiceImpl;
import com.zaxxer.hikari.HikariDataSource;
-import org.junit.Test;
import java.util.function.UnaryOperator;
@@ -149,7 +148,7 @@ public class GeneratorTest {
generator.generate();
}
- @Test
+// @Test
public void testCodeGen3() {
//配置数据源
HikariDataSource dataSource = new HikariDataSource();
diff --git a/mybatis-flex-codegen/src/test/java/com/mybatisflex/codegen/test/SqliteGeneratorTest.java b/mybatis-flex-codegen/src/test/java/com/mybatisflex/codegen/test/SqliteGeneratorTest.java
index b7a63d5f..62c9f0b1 100644
--- a/mybatis-flex-codegen/src/test/java/com/mybatisflex/codegen/test/SqliteGeneratorTest.java
+++ b/mybatis-flex-codegen/src/test/java/com/mybatisflex/codegen/test/SqliteGeneratorTest.java
@@ -16,22 +16,30 @@
package com.mybatisflex.codegen.test;
+import com.alibaba.druid.pool.DruidDataSource;
+import com.alibaba.druid.pool.DruidPooledConnection;
import com.mybatisflex.codegen.Generator;
import com.mybatisflex.codegen.config.GlobalConfig;
import com.mybatisflex.codegen.dialect.IDialect;
-import com.zaxxer.hikari.HikariDataSource;
+import org.junit.Test;
+import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.Statement;
public class SqliteGeneratorTest {
- // @Test
+// @Test
public void testGenerator3() {
//配置数据源
- HikariDataSource dataSource = new HikariDataSource();
- dataSource.setJdbcUrl("jdbc:sqlite:sample.db");
+// HikariDataSource dataSource = new HikariDataSource();
+// dataSource.setJdbcUrl("jdbc:sqlite:sample.db");
+// //dataSource.setUsername("root");
+// //dataSource.setPassword("123456");
+
+ DruidDataSource dataSource = new DruidDataSource();
+ dataSource.setUrl("jdbc:sqlite:sample.db");
//dataSource.setUsername("root");
//dataSource.setPassword("123456");
@@ -62,7 +70,7 @@ public class SqliteGeneratorTest {
generator.generate();
}
- private void createTestTable(HikariDataSource dataSource) {
+ private void createTestTable(DataSource dataSource) {
try {
Connection connection = dataSource.getConnection();