Explorar el Código

修改mybatis的jar

hmy hace 2 meses
padre
commit
9dc238579a

+ 5 - 16
pom.xml

@@ -16,7 +16,7 @@
 	<properties>
 		<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 		<mybatis-plus.version>3.5.4</mybatis-plus.version>
-		<spring.boot.version>2.7.17</spring.boot.version>
+		<spring.boot.version>3.3.13</spring.boot.version>
 		<mybatis-plus-join.version>1.4.6</mybatis-plus-join.version>
 		<druid.version>1.2.20</druid.version>
 		<mybatis-plus.version>3.5.4</mybatis-plus.version>
@@ -29,11 +29,12 @@
 		<dependency>
 			<groupId>com.mysql</groupId>
 			<artifactId>mysql-connector-j</artifactId>
+			<scope>provided</scope>
 		</dependency>
 		<dependency>
 			<groupId>com.baomidou</groupId>
-			<artifactId>dynamic-datasource-spring-boot-starter</artifactId> <!--
-			多数据源 -->
+			<artifactId>dynamic-datasource-spring-boot-starter</artifactId> 
+			<!--多数据源 -->
 			<version>${dynamic-datasource.version}</version>
 			<scope>provided</scope>
 		</dependency>
@@ -57,22 +58,10 @@
 			<artifactId>mybatis-plus-boot-starter</artifactId>
 			<version>3.5.4</version>
 		</dependency>
-		<dependency>
-			<groupId>com.alibaba</groupId>
-			<artifactId>druid-spring-boot-starter</artifactId>
-			<version>${druid.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>cn.hutool</groupId>
-			<artifactId>hutool-all</artifactId>
-			<version>${hutool.version}</version>
-			<scope>provided</scope>
-		</dependency>
 
 		<dependency>
 			<groupId>com.github.yulichang</groupId>
-			<artifactId>mybatis-plus-join-boot-starter</artifactId> <!-- MyBatis
-			联表查询 -->
+			<artifactId>mybatis-plus-join-boot-starter</artifactId> 
 			<version>${mybatis-plus-join.version}</version>
 		</dependency>
 	</dependencies>

+ 2 - 2
src/main/java/mybatisex/config/IdTypeEnvironmentPostProcessor.java

@@ -43,8 +43,8 @@ public class IdTypeEnvironmentPostProcessor implements EnvironmentPostProcessor
 			return;
 		}
 
-		// 设置 Quartz JobStore 对应的 Driver
-		// TODO 芋艿:暂时没有找到特别合适的地方,先放在这里
+ 
+ 
 		setJobStoreDriverIfPresent(environment, dbType);
 
 		// 初始化 SQL 静态变量

+ 122 - 0
src/main/java/mybatisex/core/db/DbType.java

@@ -0,0 +1,122 @@
+package mybatisex.core.db;
+
+
+
+public enum DbType {
+    other(1 << 0),
+    jtds(1 << 1),
+    hsql(1 << 2),
+    db2(1 << 3),
+    postgresql(1 << 4),
+
+    sqlserver(1 << 5),
+    oracle(1 << 6),
+    mysql(1 << 7),
+    mariadb(1 << 8),
+    derby(1 << 9),
+
+    hive(1 << 10),
+    h2(1 << 11),
+    dm(1 << 12), // dm.jdbc.driver.DmDriver
+    kingbase(1 << 13),
+    gbase(1 << 14),
+
+    oceanbase(1 << 15),
+    informix(1 << 16),
+    odps(1 << 17),
+    teradata(1 << 18),
+    phoenix(1 << 19),
+
+    edb(1 << 20),
+    kylin(1 << 21), // org.apache.kylin.jdbc.Driver
+    sqlite(1 << 22),
+    ads(1 << 23),
+    presto(1 << 24),
+
+    elastic_search(1 << 25), // com.alibaba.xdriver.elastic.jdbc.ElasticDriver
+    hbase(1 << 26),
+    drds(1 << 27),
+
+    clickhouse(1 << 28),
+    blink(1 << 29),
+    antspark(1 << 30),
+    oceanbase_oracle(1 << 31),
+    polardb(1L << 32),
+
+    ali_oracle(1L << 33),
+    mock(1L << 34),
+    sybase(1L << 35),
+    highgo(1L << 36),
+    /**
+     * 非常成熟的开源mpp数据库
+     */
+    greenplum(1L << 37),
+    /**
+     * 华为的mpp数据库
+     */
+    gaussdb(1L << 38),
+
+    trino(1L << 39),
+
+    oscar(1L << 40),
+
+    tidb(1L << 41),
+
+    tydb(1L << 42),
+
+    starrocks(1L << 43),
+
+    ingres(0),
+    cloudscape(0),
+    timesten(0),
+    as400(0),
+    sapdb(0),
+    kdb(0),
+    log4jdbc(0),
+    xugu(0),
+    firebirdsql(0),
+    JSQLConnect(0),
+    JTurbo(0),
+    interbase(0),
+    pointbase(0),
+    edbc(0),
+    mimer(0);
+
+    public final long mask;
+    public final long hashCode64;
+
+    private DbType(long mask) {
+        this.mask = mask;
+        this.hashCode64 = FnvHash.hashCode64(name());
+    }
+
+    public static long of(DbType... types) {
+        long value = 0;
+
+        for (DbType type : types) {
+            value |= type.mask;
+        }
+
+        return value;
+    }
+
+    public static DbType of(String name) {
+        if (name == null || name.isEmpty()) {
+            return null;
+        }
+
+        if ("aliyun_ads".equalsIgnoreCase(name)) {
+            return ads;
+        }
+
+        try {
+            return valueOf(name);
+        } catch (Exception e) {
+            return null;
+        }
+    }
+
+    public final boolean equals(String other) {
+        return this == of(other);
+    }
+}

La diferencia del archivo ha sido suprimido porque es demasiado grande
+ 1127 - 0
src/main/java/mybatisex/core/db/FnvHash.java


+ 145 - 0
src/main/java/mybatisex/core/db/JdbcConstants.java

@@ -0,0 +1,145 @@
+package mybatisex.core.db;
+
+ 
+
+
+
+public interface JdbcConstants {
+    DbType JTDS = DbType.jtds;
+
+    String MOCK = "mock";
+
+    DbType HSQL = DbType.hsql;
+
+    DbType DB2 = DbType.db2;
+
+    String DB2_DRIVER = "com.ibm.db2.jcc.DB2Driver"; // Type4
+    String DB2_DRIVER2 = "COM.ibm.db2.jdbc.app.DB2Driver"; // Type2
+    String DB2_DRIVER3 = "COM.ibm.db2.jdbc.net.DB2Driver"; // Type3
+
+    DbType POSTGRESQL = DbType.postgresql;
+    String POSTGRESQL_DRIVER = "org.postgresql.Driver";
+
+    DbType SYBASE = DbType.sybase;
+
+    DbType SQL_SERVER = DbType.sqlserver;
+    String SQL_SERVER_DRIVER = "com.microsoft.jdbc.sqlserver.SQLServerDriver";
+    String SQL_SERVER_DRIVER_SQLJDBC4 = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
+    String SQL_SERVER_DRIVER_JTDS = "net.sourceforge.jtds.jdbc.Driver";
+
+    DbType ORACLE = DbType.oracle;
+    String ORACLE_DRIVER = "oracle.jdbc.OracleDriver";
+    String ORACLE_DRIVER2 = "oracle.jdbc.driver.OracleDriver";
+
+    DbType ALI_ORACLE = DbType.ali_oracle;
+    String ALI_ORACLE_DRIVER = "com.alibaba.jdbc.AlibabaDriver";
+
+    DbType MYSQL = DbType.mysql;
+    String MYSQL_DRIVER = "com.mysql.jdbc.Driver";
+    String MYSQL_DRIVER_6 = "com.mysql.cj.jdbc.Driver";
+    String MYSQL_DRIVER_603 = "com.mysql.cj.api.MysqlConnection";
+    String MYSQL_DRIVER_REPLICATE = "com.mysql.jdbc.";
+
+    String MARIADB = "mariadb";
+    String MARIADB_DRIVER = "org.mariadb.jdbc.Driver";
+
+    DbType TIDB = DbType.tidb;
+    String TIDB_DRIVER = "io.tidb.bigdata.jdbc.TiDBDriver";
+
+    DbType DERBY = DbType.derby;
+
+    String HBASE = "hbase";
+
+    DbType HIVE = DbType.hive;
+    String HIVE_DRIVER = "org.apache.hive.jdbc.HiveDriver";
+
+    DbType H2 = DbType.h2;
+    String H2_DRIVER = "org.h2.Driver";
+
+    DbType DM = DbType.dm;
+    String DM_DRIVER = "dm.jdbc.driver.DmDriver";
+
+    DbType KINGBASE = DbType.kingbase;
+    String KINGBASE_DRIVER = "com.kingbase.Driver";
+    String KINGBASE8_DRIVER = "com.kingbase8.Driver";
+
+    DbType GBASE = DbType.gbase;
+    String GBASE_DRIVER = "com.gbase.jdbc.Driver";
+
+    DbType XUGU = DbType.xugu;
+    String XUGU_DRIVER = "com.xugu.cloudjdbc.Driver";
+
+    DbType OCEANBASE = DbType.oceanbase;
+    DbType OCEANBASE_ORACLE = DbType.oceanbase_oracle;
+    String OCEANBASE_DRIVER = "com.alipay.oceanbase.jdbc.Driver";
+    String OCEANBASE_DRIVER2 = "com.oceanbase.jdbc.Driver";
+
+    DbType INFORMIX = DbType.informix;
+
+    /**
+     * 阿里云odps
+     */
+    DbType ODPS = DbType.odps;
+    String ODPS_DRIVER = "com.aliyun.odps.jdbc.OdpsDriver";
+
+    String TERADATA = "teradata";
+    String TERADATA_DRIVER = "com.teradata.jdbc.TeraDriver";
+
+    /**
+     * Log4JDBC
+     */
+    String LOG4JDBC = "log4jdbc";
+    String LOG4JDBC_DRIVER = "net.sf.log4jdbc.DriverSpy";
+
+    String PHOENIX = "phoenix";
+    String PHOENIX_DRIVER = "org.apache.phoenix.jdbc.PhoenixDriver";
+    DbType ENTERPRISEDB = DbType.edb;
+    String ENTERPRISEDB_DRIVER = "com.edb.Driver";
+
+    String KYLIN = "kylin";
+    String KYLIN_DRIVER = "org.apache.kylin.jdbc.Driver";
+
+    String SQLITE = "sqlite";
+    String SQLITE_DRIVER = "org.sqlite.JDBC";
+
+    String ALIYUN_ADS = "aliyun_ads";
+    DbType ALIYUN_DRDS = DbType.drds;
+
+    String PRESTO = "presto";
+    String PRESTO_DRIVER = "com.facebook.presto.jdbc.PrestoDriver";
+
+    String TRINO = "trino";
+    String TRINO_DRIVER = "io.trino.jdbc.TrinoDriver";
+
+    String ELASTIC_SEARCH = "elastic_search";
+
+    String ELASTIC_SEARCH_DRIVER = "com.alibaba.xdriver.elastic.jdbc.ElasticDriver";
+
+    DbType CLICKHOUSE = DbType.clickhouse;
+    String CLICKHOUSE_DRIVER = "ru.yandex.clickhouse.ClickHouseDriver";
+
+    String CLICKHOUSE_DRIVER_NEW = "com.clickhouse.jdbc.ClickHouseDriver";
+
+    String KDB = "kdb";
+    String KDB_DRIVER = "com.inspur.jdbc.KdDriver";
+
+    /**
+     * Aliyun PolarDB
+     */
+    DbType POLARDB = DbType.polardb;
+    String POLARDB_DRIVER = "com.aliyun.polardb.Driver";
+    /**
+     * GreenPlum
+     */
+    DbType GREENPLUM = DbType.greenplum;
+    String GREENPLUM_DRIVER = "com.pivotal.jdbc.GreenplumDriver";
+
+    /**
+     * oscar
+     */
+    DbType OSCAR = DbType.oscar;
+    String OSCAR_DRIVER = "com.oscar.Driver";
+
+    DbType TYDB = DbType.tydb;
+    String TYDB_DRIVER = "com.dbcp.jdbc.Driver";
+}

+ 132 - 0
src/main/java/mybatisex/core/db/JdbcUtils.java

@@ -0,0 +1,132 @@
+package mybatisex.core.db;
+
+/**
+ * @author wenshao [szujobs@hotmail.com]
+ */
+public final class JdbcUtils implements JdbcConstants {
+	public static String getDbType(String rawUrl, String driverClassName) {
+		DbType dbType = getDbTypeRaw(rawUrl, driverClassName);
+
+		if (dbType == null) {
+			return null;
+		}
+
+		return dbType.name();
+	}
+
+	public static DbType getDbTypeRaw(String rawUrl, String driverClassName) {
+		if (rawUrl == null) {
+			return null;
+		}
+
+		if (rawUrl.startsWith("jdbc:derby:") || rawUrl.startsWith("jdbc:log4jdbc:derby:")) {
+			return DbType.derby;
+		} else if (rawUrl.startsWith("jdbc:mysql:") || rawUrl.startsWith("jdbc:cobar:")
+				|| rawUrl.startsWith("jdbc:log4jdbc:mysql:")) {
+			return DbType.mysql;
+		} else if (rawUrl.startsWith("jdbc:mariadb:")) {
+			return DbType.mariadb;
+		} else if (rawUrl.startsWith("jdbc:tidb:")) {
+			return DbType.tidb;
+		} else if (rawUrl.startsWith("jdbc:oracle:") || rawUrl.startsWith("jdbc:log4jdbc:oracle:")) {
+			return DbType.oracle;
+		} else if (rawUrl.startsWith("jdbc:alibaba:oracle:")) {
+			return DbType.ali_oracle;
+		} else if (rawUrl.startsWith("jdbc:oceanbase:oracle:")) {
+			return DbType.oceanbase_oracle;
+		} else if (rawUrl.startsWith("jdbc:oceanbase:")) {
+			return DbType.oceanbase;
+		} else if (rawUrl.startsWith("jdbc:microsoft:") || rawUrl.startsWith("jdbc:log4jdbc:microsoft:")) {
+			return DbType.sqlserver;
+		} else if (rawUrl.startsWith("jdbc:sqlserver:") || rawUrl.startsWith("jdbc:log4jdbc:sqlserver:")) {
+			return DbType.sqlserver;
+		} else if (rawUrl.startsWith("jdbc:sybase:Tds:") || rawUrl.startsWith("jdbc:log4jdbc:sybase:")) {
+			return DbType.sybase;
+		} else if (rawUrl.startsWith("jdbc:jtds:") || rawUrl.startsWith("jdbc:log4jdbc:jtds:")) {
+			return DbType.jtds;
+		} else if (rawUrl.startsWith("jdbc:fake:") || rawUrl.startsWith("jdbc:mock:")) {
+			return DbType.mock;
+		} else if (rawUrl.startsWith("jdbc:postgresql:") || rawUrl.startsWith("jdbc:log4jdbc:postgresql:")) {
+			return DbType.postgresql;
+		} else if (rawUrl.startsWith("jdbc:edb:")) {
+			return DbType.edb;
+		} else if (rawUrl.startsWith("jdbc:hsqldb:") || rawUrl.startsWith("jdbc:log4jdbc:hsqldb:")) {
+			return DbType.hsql;
+		} else if (rawUrl.startsWith("jdbc:odps:")) {
+			return DbType.odps;
+		} else if (rawUrl.startsWith("jdbc:db2:")) {
+			return DbType.db2;
+		} else if (rawUrl.startsWith("jdbc:sqlite:")) {
+			return DbType.sqlite;
+		} else if (rawUrl.startsWith("jdbc:ingres:")) {
+			return DbType.ingres;
+		} else if (rawUrl.startsWith("jdbc:h2:") || rawUrl.startsWith("jdbc:log4jdbc:h2:")) {
+			return DbType.h2;
+		} else if (rawUrl.startsWith("jdbc:mckoi:")) {
+			return DbType.mock;
+		} else if (rawUrl.startsWith("jdbc:cloudscape:")) {
+			return DbType.cloudscape;
+		} else if (rawUrl.startsWith("jdbc:informix-sqli:") || rawUrl.startsWith("jdbc:log4jdbc:informix-sqli:")) {
+			return DbType.informix;
+		} else if (rawUrl.startsWith("jdbc:timesten:")) {
+			return DbType.timesten;
+		} else if (rawUrl.startsWith("jdbc:as400:")) {
+			return DbType.as400;
+		} else if (rawUrl.startsWith("jdbc:sapdb:")) {
+			return DbType.sapdb;
+		} else if (rawUrl.startsWith("jdbc:JSQLConnect:")) {
+			return DbType.JSQLConnect;
+		} else if (rawUrl.startsWith("jdbc:JTurbo:")) {
+			return DbType.JTurbo;
+		} else if (rawUrl.startsWith("jdbc:firebirdsql:")) {
+			return DbType.firebirdsql;
+		} else if (rawUrl.startsWith("jdbc:interbase:")) {
+			return DbType.interbase;
+		} else if (rawUrl.startsWith("jdbc:pointbase:")) {
+			return DbType.pointbase;
+		} else if (rawUrl.startsWith("jdbc:edbc:")) {
+			return DbType.edbc;
+		} else if (rawUrl.startsWith("jdbc:mimer:multi1:")) {
+			return DbType.mimer;
+		} else if (rawUrl.startsWith("jdbc:dm:")) {
+			return JdbcConstants.DM;
+		} else if (rawUrl.startsWith("jdbc:kingbase:") || rawUrl.startsWith("jdbc:kingbase8:")) {
+			return JdbcConstants.KINGBASE;
+		} else if (rawUrl.startsWith("jdbc:gbase:")) {
+			return JdbcConstants.GBASE;
+		} else if (rawUrl.startsWith("jdbc:xugu:")) {
+			return JdbcConstants.XUGU;
+		} else if (rawUrl.startsWith("jdbc:log4jdbc:")) {
+			return DbType.log4jdbc;
+		} else if (rawUrl.startsWith("jdbc:hive:")) {
+			return DbType.hive;
+		} else if (rawUrl.startsWith("jdbc:hive2:")) {
+			return DbType.hive;
+		} else if (rawUrl.startsWith("jdbc:phoenix:")) {
+			return DbType.phoenix;
+		} else if (rawUrl.startsWith("jdbc:kylin:")) {
+			return DbType.kylin;
+		} else if (rawUrl.startsWith("jdbc:elastic:")) {
+			return DbType.elastic_search;
+		} else if (rawUrl.startsWith("jdbc:clickhouse:")) {
+			return DbType.clickhouse;
+		} else if (rawUrl.startsWith("jdbc:presto:")) {
+			return DbType.presto;
+		} else if (rawUrl.startsWith("jdbc:trino:")) {
+			return DbType.trino;
+		} else if (rawUrl.startsWith("jdbc:inspur:")) {
+			return DbType.kdb;
+		} else if (rawUrl.startsWith("jdbc:polardb")) {
+			return DbType.polardb;
+		} else if (rawUrl.startsWith("jdbc:highgo:")) {
+			return DbType.highgo;
+		} else if (rawUrl.startsWith("jdbc:pivotal:greenplum:") || rawUrl.startsWith("jdbc:datadirect:greenplum:")) {
+			return DbType.greenplum;
+		} else if (rawUrl.startsWith("jdbc:opengauss:") || rawUrl.startsWith("jdbc:gaussdb:")
+				|| rawUrl.startsWith("jdbc:dws:iam:")) {
+			return DbType.gaussdb;
+		} else {
+			return null;
+		}
+	}
+}

+ 7 - 17
src/main/java/mybatisex/core/type/EncryptTypeHandler.java

@@ -1,12 +1,11 @@
 package mybatisex.core.type;
 
-import cn.hutool.core.lang.Assert;
-import cn.hutool.crypto.SecureUtil;
-import cn.hutool.crypto.symmetric.AES;
-import cn.hutool.extra.spring.SpringUtil;
+ 
 import org.apache.ibatis.type.BaseTypeHandler;
 import org.apache.ibatis.type.JdbcType;
 
+import com.baomidou.mybatisplus.core.toolkit.AES;
+
 import java.sql.CallableStatement;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
@@ -22,7 +21,7 @@ public class EncryptTypeHandler extends BaseTypeHandler<String> {
 
     private static final String ENCRYPTOR_PROPERTY_NAME = "mybatis-plus.encryptor.password";
 
-    private static AES aes;
+     private static final String KEY="mybatis";
 
     @Override
     public void setNonNullParameter(PreparedStatement ps, int i, String parameter, JdbcType jdbcType) throws SQLException {
@@ -51,25 +50,16 @@ public class EncryptTypeHandler extends BaseTypeHandler<String> {
         if (value == null) {
             return null;
         }
-        return getEncryptor().decryptStr(value);
+        return AES.decrypt(value, KEY);
     }
 
     public static String encrypt(String rawValue) {
         if (rawValue == null) {
             return null;
         }
-        return getEncryptor().encryptBase64(rawValue);
+        return AES.encrypt(rawValue, KEY);
     }
 
-    private static AES getEncryptor() {
-        if (aes != null) {
-            return aes;
-        }
-        // 构建 AES
-        String password = SpringUtil.getProperty(ENCRYPTOR_PROPERTY_NAME);
-        Assert.notEmpty(password, "配置项({}) 不能为空", ENCRYPTOR_PROPERTY_NAME);
-        aes = SecureUtil.aes(password.getBytes());
-        return aes;
-    }
+   
 
 }

+ 8 - 6
src/main/java/mybatisex/core/type/IntegerListTypeHandler.java

@@ -1,13 +1,15 @@
 package mybatisex.core.type;
 
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.StrUtil;
+
 
 import org.apache.ibatis.type.JdbcType;
 import org.apache.ibatis.type.MappedJdbcTypes;
 import org.apache.ibatis.type.MappedTypes;
 import org.apache.ibatis.type.TypeHandler;
 
+import mybatisex.core.util.CollUtil;
+import mybatisex.core.util.StrUtils;
+
 import java.sql.CallableStatement;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
@@ -29,7 +31,7 @@ public class IntegerListTypeHandler implements TypeHandler<List<Integer>> {
 
     @Override
     public void setParameter(PreparedStatement ps, int i, List<Integer> strings, JdbcType jdbcType) throws SQLException {
-        ps.setString(i, CollUtil.join(strings, COMMA));
+        ps.setString(i, CollUtil.joinInt(strings, COMMA));
     }
 
     @Override
@@ -56,8 +58,8 @@ public class IntegerListTypeHandler implements TypeHandler<List<Integer>> {
         }
         return splitToInteger(value, COMMA);
     }
-    public static List<Integer> splitToInteger(String value, CharSequence separator) {
-        int[] integers = StrUtil.splitToInt(value, separator);
-        return Arrays.stream(integers).boxed().collect(Collectors.toList());
+    public static List<Integer> splitToInteger(String value, String separator) {
+      
+        return StrUtils.splitInt(value, separator);
     }
 }

+ 8 - 8
src/main/java/mybatisex/core/type/LongListTypeHandler.java

@@ -1,13 +1,13 @@
 package mybatisex.core.type;
 
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.StrUtil;
-
 import org.apache.ibatis.type.JdbcType;
 import org.apache.ibatis.type.MappedJdbcTypes;
 import org.apache.ibatis.type.MappedTypes;
 import org.apache.ibatis.type.TypeHandler;
 
+import mybatisex.core.util.CollUtil;
+import mybatisex.core.util.StrUtils;
+
 import java.sql.CallableStatement;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
@@ -19,7 +19,7 @@ import java.util.stream.Collectors;
 /**
  * List<Long> 的类型转换器实现类,对应数据库的 varchar 类型
  *
- * @author  
+ * @author
  */
 @MappedJdbcTypes(JdbcType.VARCHAR)
 @MappedTypes(List.class)
@@ -30,7 +30,7 @@ public class LongListTypeHandler implements TypeHandler<List<Long>> {
 	@Override
 	public void setParameter(PreparedStatement ps, int i, List<Long> strings, JdbcType jdbcType) throws SQLException {
 		// 设置占位符
-		ps.setString(i, CollUtil.join(strings, COMMA));
+		ps.setString(i, CollUtil.joinLong(strings, COMMA));
 	}
 
 	@Override
@@ -58,8 +58,8 @@ public class LongListTypeHandler implements TypeHandler<List<Long>> {
 		return splitToLong(value, COMMA);
 	}
 
-	private List<Long> splitToLong(String value, CharSequence separator) {
-		long[] longs = StrUtil.splitToLong(value, separator);
-		return Arrays.stream(longs).boxed().collect(Collectors.toList());
+	private List<Long> splitToLong(String value, String separator) {
+
+		return StrUtils.splitLong(value, separator);
 	}
 }

+ 33 - 34
src/main/java/mybatisex/core/type/StringListTypeHandler.java

@@ -1,16 +1,18 @@
 package mybatisex.core.type;
 
-import cn.hutool.core.collection.CollUtil;
-import cn.hutool.core.util.StrUtil;
 import org.apache.ibatis.type.JdbcType;
 import org.apache.ibatis.type.MappedJdbcTypes;
 import org.apache.ibatis.type.MappedTypes;
 import org.apache.ibatis.type.TypeHandler;
 
+import mybatisex.core.util.CollUtil;
+import mybatisex.core.util.StrUtils;
+
 import java.sql.CallableStatement;
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
 import java.sql.SQLException;
+import java.util.Arrays;
 import java.util.List;
 
 /**
@@ -23,36 +25,33 @@ import java.util.List;
 @MappedTypes(List.class)
 public class StringListTypeHandler implements TypeHandler<List<String>> {
 
-    private static final String COMMA = ",";
-
-    @Override
-    public void setParameter(PreparedStatement ps, int i, List<String> strings, JdbcType jdbcType) throws SQLException {
-        // 设置占位符
-        ps.setString(i, CollUtil.join(strings, COMMA));
-    }
-
-    @Override
-    public List<String> getResult(ResultSet rs, String columnName) throws SQLException {
-        String value = rs.getString(columnName);
-        return getResult(value);
-    }
-
-    @Override
-    public List<String> getResult(ResultSet rs, int columnIndex) throws SQLException {
-        String value = rs.getString(columnIndex);
-        return getResult(value);
-    }
-
-    @Override
-    public List<String> getResult(CallableStatement cs, int columnIndex) throws SQLException {
-        String value = cs.getString(columnIndex);
-        return getResult(value);
-    }
-
-    private List<String> getResult(String value) {
-        if (value == null) {
-            return null;
-        }
-        return StrUtil.splitTrim(value, COMMA);
-    }
+	private static final String COMMA = ",";
+
+	@Override
+	public void setParameter(PreparedStatement ps, int i, List<String> strings, JdbcType jdbcType) throws SQLException {
+		// 设置占位符
+		ps.setString(i, CollUtil.join(strings, COMMA));
+	}
+
+	@Override
+	public List<String> getResult(ResultSet rs, String columnName) throws SQLException {
+		String value = rs.getString(columnName);
+		return getResult(value);
+	}
+
+	@Override
+	public List<String> getResult(ResultSet rs, int columnIndex) throws SQLException {
+		String value = rs.getString(columnIndex);
+		return getResult(value);
+	}
+
+	@Override
+	public List<String> getResult(CallableStatement cs, int columnIndex) throws SQLException {
+		String value = cs.getString(columnIndex);
+		return getResult(value);
+	}
+
+	private List<String> getResult(String value) {
+		return  StrUtils.split(value, COMMA);
+	}
 }

+ 36 - 5
src/main/java/mybatisex/core/util/CollUtil.java

@@ -5,11 +5,13 @@ import java.util.Collection;
 import java.util.Collections;
 import java.util.HashSet;
 import java.util.LinkedHashSet;
+import java.util.List;
 import java.util.Map;
-
-
+import java.util.stream.Collectors;
 
 public class CollUtil {
+	private static final String EMPTY = "";
+
 	/**
 	 * 集合是否为空
 	 *
@@ -19,6 +21,7 @@ public class CollUtil {
 	public static boolean isEmpty(Collection<?> collection) {
 		return collection == null || collection.isEmpty();
 	}
+
 	/**
 	 * Map是否为空
 	 *
@@ -28,6 +31,33 @@ public class CollUtil {
 	public static boolean isEmpty(Map<?, ?> map) {
 		return null == map || map.isEmpty();
 	}
+
+	public static String join(List<String> values, String join) {
+
+		return String.join(join, values);
+	}
+
+	public static String joinLong(List<Long> values, String join) {
+		if (values == null || values.size() == 0) {
+			return EMPTY;
+		}
+		String result = values.stream()
+				.map(String::valueOf)
+				.filter(s -> !"null".equals(s))
+				.collect(Collectors.joining(","));
+		return result;
+	}
+	public static String joinInt(List<Integer> values, String join) {
+		if (values == null || values.size() == 0) {
+			return EMPTY;
+		}
+		String result = values.stream()
+				.map(String::valueOf)
+				.filter(s -> !"null".equals(s))
+				 
+				.collect(Collectors.joining(","));
+		return result;
+	}
 	/**
 	 * 新建一个ArrayList
 	 *
@@ -36,10 +66,11 @@ public class CollUtil {
 	 * @return ArrayList对象
 	 * @see #toList(Object[])
 	 */
-	
+
 	public static <T> ArrayList<T> newArrayList() {
 		return new ArrayList<T>();
 	}
+
 	/**
 	 * 新建一个HashSet
 	 *
@@ -50,9 +81,9 @@ public class CollUtil {
 	 */
 	@SafeVarargs
 	public static <T> HashSet<T> newHashSet(T... ts) {
-		final HashSet<T> set =  new HashSet<>();
+		final HashSet<T> set = new HashSet<>();
 		Collections.addAll(set, ts);
 		return set;
 	}
-	
+
 }

+ 1 - 1
src/main/java/mybatisex/core/util/CollectionHandlerUtils.java

@@ -10,7 +10,7 @@ import static java.util.Arrays.asList;
 /**
  * Collection 工具类
  *
- * @author 芋道源码
+ * @author 
  */
 public class CollectionHandlerUtils {
 

+ 1 - 1
src/main/java/mybatisex/core/util/JdbcUtils.java

@@ -35,7 +35,7 @@ public class JdbcUtils {
      * @return DB 类型
      */
     public static DbType getDbType(String url) {
-        String name = com.alibaba.druid.util.JdbcUtils.getDbType(url, null);
+        String name = mybatisex.core.db.JdbcUtils.getDbType(url, null);
         return DbType.getDbType(name);
     }
 

+ 1 - 1
src/main/java/mybatisex/core/util/MapUtils.java

@@ -9,7 +9,7 @@ import java.util.function.Consumer;
 /**
  * Map 工具类
  *
- * @author 芋道源码
+ * @author 
  */
 public class MapUtils {
 	/**

+ 1 - 1
src/main/java/mybatisex/core/util/SetUtils.java

@@ -5,7 +5,7 @@ import java.util.Set;
 /**
  * Set 工具类
  *
- * @author 芋道源码
+ * @author 
  */
 public class SetUtils {
 	

+ 30 - 1
src/main/java/mybatisex/core/util/StrUtils.java

@@ -1,9 +1,14 @@
 package mybatisex.core.util;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.stream.Collectors;
+
 /**
  * 字符串工具类
  *
- * @author 芋道源码
+ * @author
  */
 public class StrUtils {
 	public static final int INDEX_NOT_FOUND = -1;
@@ -126,4 +131,28 @@ public class StrUtils {
 		}
 	}
 
+	public static List<String> split(String key, String split) {
+		if (key == null) {
+			return new ArrayList<>();
+		}
+		// 1. 拆分字符串为数组
+		String[] strArray = key.split(split);
+		return Arrays.asList(strArray);
+	}
+
+	public static List<Long> splitLong(String key, String split) {
+		if (key == null) {
+			return new ArrayList<>();
+		}
+		List<Long> longList = Arrays.stream(key.split(split)).map(Long::valueOf).collect(Collectors.toList());
+		return longList;
+	}
+
+	public static List<Integer> splitInt(String key, String split) {
+		if (key == null) {
+			return new ArrayList<>();
+		}
+		List<Integer> longList = Arrays.stream(key.split(split)).map(Integer::valueOf).collect(Collectors.toList());
+		return longList;
+	}
 }

+ 0 - 2
src/main/resources/META-INF/spring.factories

@@ -1,2 +0,0 @@
-org.springframework.boot.env.EnvironmentPostProcessor=\
-  mybatisex.config.IdTypeEnvironmentPostProcessor

+ 0 - 1
src/main/resources/META-INF/spring/org.springframework.boot.autoconfigure.AutoConfiguration.imports

@@ -1 +0,0 @@
-cn.flowbb.framework.mybatis.config.YudaoMybatisAutoConfiguration