DELIMITER $$
DROPFUNCTIONIFEXISTS dataTypeMapping$$
CREATEFUNCTION dataTypeMapping (typeVARCHAR(20))RETURNSVARCHAR(20)BEGINDECLARE ret VARCHAR(20)DEFAULTtype;CASE UPPER(type)-- 布尔型WHEN'BIT'THENSET ret ='Boolean';-- 整型WHEN'INT'THENSET ret ='Integer';WHEN'INTEGER'THENSET ret ='Integer';WHEN'TINYINT'THENSET ret ='Integer';-- 浮点型WHEN'DECIMAL'THENSET ret ='BigDecimal';WHEN'FLOAT'THENSET ret ='FLOAT';WHEN'DOUBLE'THENSET ret ='DOUBLE';-- 字符串类型WHEN'VARCHAR'THENSET ret ='String';WHEN'CHAR'THENSET ret ='String';WHEN'TEXT'THENSET ret ='String';-- 时间类型WHEN'DATETIME'THENSET ret ='Date';WHEN'DATE'THENSET ret ='Date';WHEN'TIME'THENSET ret ='Time';WHEN'TIMESTAMP'THENSET ret ='Date';WHEN'DATETIME'THENSET ret ='Date';-- 特殊类型按照以下格式添加即可-- WHEN '数据库中类型大写' THEN SET ret ='Java中类型';-- 其他类型不做映射ELSESET ret =type;ENDCASE;return ret;END $$
DELIMITER;------使用示例------// 查询 test 表字段 类型SELECT dataTypeMapping(DATA_TYPE)FROM information_schema.`COLUMNS`WHERE TABLE_SCHEMA ='test'-- 数据库名AND TABLE_NAME ='test'-- 表名orderby ORDINAL_POSITION;
postgresql
驼峰转换
CREATEORREPLACEFUNCTION transform_underline(name text)RETURNStextAS $$
DECLARE
ret text :='';
i int :=0;BEGINLOOP
i := POSITION('_'IN name);IF i =0THENEXIT;ENDIF;
ret := ret || INITCAP(SUBSTRING(name FROM1FOR i -1));
name := SUBSTRING(name FROM i +1);ENDLOOP;
ret := ret || INITCAP(name);RETURN LOWER(SUBSTRING(ret FROM1FOR1))|| SUBSTRING(ret FROM2);END;
$$ LANGUAGE plpgsql;------使用示例------// 查询 test 表字段 并转为 驼峰格式SELECT transform_underline(column_name)FROM information_schema.columnsWHERE table_name ='test'ORDERBY ordinal_position;
字段类型映射
CREATEORREPLACEFUNCTION dataTypeMapping(typeTEXT)RETURNSTEXTAS
$$
DECLARE
ret TEXT :=type;BEGINCASE UPPER(type)WHEN'BIGINT'THEN ret :='Long';WHEN'INTEGER'THEN ret :='Integer';WHEN'CHARACTER VARYING'THEN ret :='String';WHEN'NUMERIC'THEN ret :='BigDecimal';WHEN'TIMESTAMP WITHOUT TIME ZONE'THEN ret :='Date';WHEN'SMALLINT'THEN ret :='Integer';-- 类型按照以下格式添加即可-- WHEN '数据库中类型大写' THEN SET ret ='Java中类型';-- 其他类型不做映射ELSE ret :=type;ENDCASE;RETURN ret;END;
$$ LANGUAGE plpgsql;------使用示例------// 查询 test 表字段 类型SELECT dataTypeMapping(data_type)FROM information_schema.columnsWHERE table_name ='test 'ORDERBY ordinal_position;