|
@@ -17,121 +17,57 @@ package com.baomidou.mybatisplus.generator.config.converts;
|
|
|
|
|
|
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
|
|
|
import com.baomidou.mybatisplus.generator.config.ITypeConvert;
|
|
|
-import com.baomidou.mybatisplus.generator.config.rules.DbColumnType;
|
|
|
import com.baomidou.mybatisplus.generator.config.rules.IColumnType;
|
|
|
|
|
|
+import static com.baomidou.mybatisplus.generator.config.converts.TypeConverts.contains;
|
|
|
+import static com.baomidou.mybatisplus.generator.config.converts.TypeConverts.containsAny;
|
|
|
+import static com.baomidou.mybatisplus.generator.config.rules.DbColumnType.*;
|
|
|
+
|
|
|
/**
|
|
|
* DM 字段类型转换
|
|
|
*
|
|
|
* @author halower
|
|
|
+ * @author hanchunlin
|
|
|
* @since 2019-06-27
|
|
|
*/
|
|
|
public class DmTypeConvert implements ITypeConvert {
|
|
|
-
|
|
|
- @Override
|
|
|
- public IColumnType processTypeConvert(GlobalConfig globalConfig, String fieldType) {
|
|
|
- String t = fieldType.toLowerCase();
|
|
|
- return new BasicDataTypeHandler().getDbColumnType(t);
|
|
|
- }
|
|
|
-
|
|
|
- interface Handler {
|
|
|
- DbColumnType getDbColumnType(String fieldType);
|
|
|
- }
|
|
|
-
|
|
|
- /**
|
|
|
- * 常规数据类型
|
|
|
- */
|
|
|
- class BasicDataTypeHandler implements Handler {
|
|
|
- @Override
|
|
|
- public DbColumnType getDbColumnType(String fieldType) {
|
|
|
- //字符数据类型: CHAR,CHARACTER,VARCHAR
|
|
|
- if(fieldType.contains("char")) {
|
|
|
- return DbColumnType.STRING;
|
|
|
- }
|
|
|
- /**
|
|
|
- * 数值数据类型:
|
|
|
- * NUMERIC,DECIMAL,DEC,MONEY,BIT,BOOL,BOOLEAN,INTEGER,INT,BIGINT
|
|
|
- * TINYINT,BYTE,SMALLINT,BINARY,VARBINARY
|
|
|
- */
|
|
|
- else if (fieldType.contains("numeric")
|
|
|
- || fieldType.contains("decimal")
|
|
|
- || fieldType.contains("dec")
|
|
|
- || fieldType.contains("money")) {
|
|
|
- return DbColumnType.BIG_DECIMAL;
|
|
|
- }
|
|
|
- else if(fieldType.contains("bit")
|
|
|
- || fieldType.contains("bool")
|
|
|
- || fieldType.contains("boolean")){
|
|
|
- return DbColumnType.BOOLEAN;
|
|
|
- }
|
|
|
- else if(fieldType.contains("integer") || fieldType.contains("int")){
|
|
|
- return DbColumnType.INTEGER;
|
|
|
- }
|
|
|
- else if(fieldType.contains("bigint") ){
|
|
|
- return DbColumnType.BIG_INTEGER;
|
|
|
- }
|
|
|
- else if(fieldType.contains("tinyint")
|
|
|
- || fieldType.contains("byte")
|
|
|
- || fieldType.contains("smallint")
|
|
|
- ){
|
|
|
- return DbColumnType.INTEGER;
|
|
|
- }
|
|
|
- else if (fieldType.contains("binary")
|
|
|
- || fieldType.contains("varbinary")
|
|
|
- ) {
|
|
|
- return DbColumnType.BYTE_ARRAY;
|
|
|
- }
|
|
|
- /**
|
|
|
- * 近似数值数据类型:
|
|
|
- * FLOAT
|
|
|
- */
|
|
|
- else if (fieldType.contains("float")) {
|
|
|
- return DbColumnType.FLOAT;
|
|
|
- }
|
|
|
- /**
|
|
|
- * DOUBLE, DOUBLE PRECISION,REAL
|
|
|
- */
|
|
|
- else if (fieldType.contains("double") || fieldType.contains("real")) {
|
|
|
- return DbColumnType.DOUBLE;
|
|
|
- }
|
|
|
- return new DateTimeDataTypeHandler().getDbColumnType(fieldType);
|
|
|
- }
|
|
|
- }
|
|
|
+ public static final DmTypeConvert INSTANCE = new DmTypeConvert();
|
|
|
|
|
|
/**
|
|
|
- * 日期时间数据类型
|
|
|
+ * 字符数据类型: CHAR,CHARACTER,VARCHAR
|
|
|
+ * <p>
|
|
|
+ * 数值数据类型: NUMERIC,DECIMAL,DEC,MONEY,BIT,BOOL,BOOLEAN,INTEGER,INT,BIGINT,TINYINT,BYTE,SMALLINT,BINARY,
|
|
|
+ * VARBINARY
|
|
|
+ * <p>
|
|
|
+ * 近似数值数据类型: FLOAT
|
|
|
+ * <p>
|
|
|
+ * DOUBLE, DOUBLE PRECISION,REAL
|
|
|
+ * <p>
|
|
|
+ * 日期时间数据类型
|
|
|
+ * <p>
|
|
|
+ * 多媒体数据类型: TEXT,LONGVARCHAR,CLOB,BLOB,IMAGE
|
|
|
+ *
|
|
|
+ * @param config 全局配置
|
|
|
+ * @param fieldType 字段类型
|
|
|
+ * @return 对应的数据类型
|
|
|
+ * @inheritDoc
|
|
|
*/
|
|
|
- class DateTimeDataTypeHandler implements Handler{
|
|
|
-
|
|
|
- @Override
|
|
|
- public DbColumnType getDbColumnType(String fieldType) {
|
|
|
- if (fieldType.contains("date")
|
|
|
- || fieldType.contains("time")
|
|
|
- || fieldType.contains("timestamp")) {
|
|
|
- return DbColumnType.DATE;
|
|
|
- }
|
|
|
- return new MultimediaDataTypeHandler().getDbColumnType(fieldType);
|
|
|
- }
|
|
|
+ @Override
|
|
|
+ public IColumnType processTypeConvert(GlobalConfig config, String fieldType) {
|
|
|
+ return TypeConverts.use(fieldType)
|
|
|
+ .test(containsAny("char", "text").then(STRING))
|
|
|
+ .test(containsAny("numeric", "dec", "money").then(BIG_DECIMAL))
|
|
|
+ .test(containsAny("bit", "bool").then(BOOLEAN))
|
|
|
+ .test(contains("bigint").then(BIG_INTEGER))
|
|
|
+ .test(containsAny("int", "byte").then(INTEGER))
|
|
|
+ .test(contains("binary").then(BYTE_ARRAY))
|
|
|
+ .test(contains("float").then(FLOAT))
|
|
|
+ .test(containsAny("double", "real").then(DOUBLE))
|
|
|
+ .test(containsAny("date", "time").then(DATE))
|
|
|
+ .test(contains("clob").then(CLOB))
|
|
|
+ .test(contains("blob").then(BLOB))
|
|
|
+ .test(contains("image").then(BYTE_ARRAY))
|
|
|
+ .or(STRING);
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 多媒体数据类型
|
|
|
- * TEXT,LONGVARCHAR,CLOB,BLOB,IMAGE
|
|
|
- */
|
|
|
-
|
|
|
- class MultimediaDataTypeHandler implements Handler{
|
|
|
- @Override
|
|
|
- public DbColumnType getDbColumnType(String fieldType) {
|
|
|
- if (fieldType.contains("text")|| fieldType.contains("longvarchar")) {
|
|
|
- return DbColumnType.STRING;
|
|
|
- } else if (fieldType.contains("clob")) {
|
|
|
- return DbColumnType.CLOB;
|
|
|
- } else if (fieldType.contains("blob")) {
|
|
|
- return DbColumnType.BLOB;
|
|
|
- } else if (fieldType.contains("image")) {
|
|
|
- return DbColumnType.BYTE_ARRAY;
|
|
|
- }
|
|
|
- return DbColumnType.STRING;
|
|
|
- }
|
|
|
- }
|
|
|
}
|