mirror of
https://github.com/dromara/RuoYi-Vue-Plus.git
synced 2026-07-09 06:06:11 +00:00
@@ -108,26 +108,29 @@ public interface GenConstants {
|
||||
/**
|
||||
* 数据库字符串类型
|
||||
*/
|
||||
String[] COLUMNTYPE_STR = {"char", "varchar", "enum", "set", "nchar", "nvarchar", "varchar2", "nvarchar2"};
|
||||
String[] COLUMNTYPE_STR = {"char", "varchar", "enum", "set", "nchar", "nvarchar", "varchar2", "nvarchar2",
|
||||
"long varchar", "long nvarchar", "uniqueidentifier", "uuid", "json", "jsonb", "xml"};
|
||||
|
||||
/**
|
||||
* 数据库文本类型
|
||||
*/
|
||||
String[] COLUMNTYPE_TEXT = {"tinytext", "text", "mediumtext", "longtext", "binary", "varbinary", "blob",
|
||||
"ntext", "image", "bytea"};
|
||||
"ntext", "image", "bytea", "clob", "nclob", "long", "long raw", "raw"};
|
||||
|
||||
/**
|
||||
* 数据库时间类型
|
||||
*/
|
||||
String[] COLUMNTYPE_TIME = {"datetime", "time", "date", "timestamp", "year", "interval",
|
||||
"smalldatetime", "datetime2", "datetimeoffset", "timestamptz"};
|
||||
"smalldatetime", "datetime2", "datetimeoffset", "timestamptz", "timestamp with time zone",
|
||||
"timestamp without time zone", "time with time zone", "time without time zone"};
|
||||
|
||||
/**
|
||||
* 数据库数字类型
|
||||
*/
|
||||
String[] COLUMNTYPE_NUMBER = {"tinyint", "smallint", "mediumint", "int", "int2", "int4", "int8", "number", "integer",
|
||||
"bit", "bigint", "float", "float4", "float8", "double", "decimal", "numeric", "real", "double precision",
|
||||
"smallserial", "serial", "bigserial", "money", "smallmoney"};
|
||||
"bit", "boolean", "bool", "bigint", "float", "float4", "float8", "double", "decimal", "dec", "fixed",
|
||||
"numeric", "real", "double precision", "binary_float", "binary_double", "smallserial", "serial",
|
||||
"serial2", "serial4", "serial8", "bigserial", "money", "smallmoney"};
|
||||
|
||||
/**
|
||||
* BO对象 不需要添加字段
|
||||
@@ -233,6 +236,11 @@ public interface GenConstants {
|
||||
*/
|
||||
String TYPE_DOUBLE = "Double";
|
||||
|
||||
/**
|
||||
* 单精度浮点型
|
||||
*/
|
||||
String TYPE_FLOAT = "Float";
|
||||
|
||||
/**
|
||||
* 高精度计算类型
|
||||
*/
|
||||
|
||||
@@ -156,7 +156,7 @@ public class GenTableColumn extends BaseEntity {
|
||||
}
|
||||
if (StringUtils.equalsAny(this.javaType,
|
||||
GenConstants.TYPE_LONG, GenConstants.TYPE_INTEGER, GenConstants.TYPE_DOUBLE,
|
||||
"Float", GenConstants.TYPE_BIGDECIMAL)) {
|
||||
GenConstants.TYPE_FLOAT, GenConstants.TYPE_BIGDECIMAL)) {
|
||||
return "number";
|
||||
}
|
||||
if (StringUtils.equals(this.javaType, GenConstants.TYPE_BOOLEAN)) {
|
||||
@@ -174,7 +174,7 @@ public class GenTableColumn extends BaseEntity {
|
||||
if (StringUtils.equals(this.javaType, GenConstants.TYPE_BOOLEAN)) {
|
||||
return "true";
|
||||
}
|
||||
if (StringUtils.equalsAny(this.javaType, GenConstants.TYPE_INTEGER, GenConstants.TYPE_LONG)) {
|
||||
if (isNumberType()) {
|
||||
return "0";
|
||||
}
|
||||
return "'0'";
|
||||
@@ -189,12 +189,23 @@ public class GenTableColumn extends BaseEntity {
|
||||
if (StringUtils.equals(this.javaType, GenConstants.TYPE_BOOLEAN)) {
|
||||
return "false";
|
||||
}
|
||||
if (StringUtils.equalsAny(this.javaType, GenConstants.TYPE_INTEGER, GenConstants.TYPE_LONG)) {
|
||||
if (isNumberType()) {
|
||||
return "1";
|
||||
}
|
||||
return "'1'";
|
||||
}
|
||||
|
||||
/**
|
||||
* 判断当前字段是否为数值类型。
|
||||
*
|
||||
* @return 数值类型返回 {@code true}
|
||||
*/
|
||||
public boolean isNumberType() {
|
||||
return StringUtils.equalsAny(this.javaType,
|
||||
GenConstants.TYPE_INTEGER, GenConstants.TYPE_LONG, GenConstants.TYPE_DOUBLE,
|
||||
GenConstants.TYPE_FLOAT, GenConstants.TYPE_BIGDECIMAL);
|
||||
}
|
||||
|
||||
/**
|
||||
* 是否为日期范围查询字段。
|
||||
*
|
||||
|
||||
@@ -46,7 +46,7 @@ public class GenUtils {
|
||||
* @param table 所属业务表对象
|
||||
*/
|
||||
public static void initColumnField(GenTableColumn column, GenTable table) {
|
||||
String dataType = getDbType(column.getColumnType()).toLowerCase();
|
||||
String dataType = normalizeDbType(getDbType(column.getColumnType()));
|
||||
// 统一转小写 避免有些数据库默认大写问题 如果需要特别书写方式 请在实体类增加注解标注别名
|
||||
String columnName = column.getColumnName().toLowerCase();
|
||||
Integer columnLength = getColumnLength(column.getColumnType());
|
||||
@@ -150,16 +150,20 @@ public class GenUtils {
|
||||
if (isBooleanColumn(dataType, columnLength, columnScale, columnName)) {
|
||||
return GenConstants.TYPE_BOOLEAN;
|
||||
}
|
||||
if (arraysContains(new String[]{"decimal", "numeric", "money", "smallmoney"}, dataType)) {
|
||||
return columnScale > 0 ? GenConstants.TYPE_BIGDECIMAL : resolveIntegerJavaType(columnLength);
|
||||
if (arraysContains(new String[]{"decimal", "dec", "fixed", "numeric", "money", "smallmoney"}, dataType)) {
|
||||
return GenConstants.TYPE_BIGDECIMAL;
|
||||
}
|
||||
if (arraysContains(new String[]{"float", "float4", "float8", "double", "real", "double precision"}, dataType)) {
|
||||
if (arraysContains(new String[]{"float4", "real", "binary_float"}, dataType)) {
|
||||
return GenConstants.TYPE_FLOAT;
|
||||
}
|
||||
if (arraysContains(new String[]{"float", "float8", "double", "double precision", "binary_double"}, dataType)) {
|
||||
return GenConstants.TYPE_DOUBLE;
|
||||
}
|
||||
if (arraysContains(new String[]{"bigint", "int8", "bigserial"}, dataType)) {
|
||||
if (arraysContains(new String[]{"bigint", "int8", "bigserial", "serial8"}, dataType)) {
|
||||
return GenConstants.TYPE_LONG;
|
||||
}
|
||||
if (arraysContains(new String[]{"smallint", "mediumint", "int", "int2", "int4", "integer", "smallserial", "serial"}, dataType)) {
|
||||
if (arraysContains(new String[]{"tinyint", "smallint", "mediumint", "int", "int2", "int4", "integer",
|
||||
"smallserial", "serial", "serial2", "serial4"}, dataType)) {
|
||||
return GenConstants.TYPE_INTEGER;
|
||||
}
|
||||
if (StringUtils.equals(dataType, "number")) {
|
||||
@@ -171,6 +175,19 @@ public class GenUtils {
|
||||
return GenConstants.TYPE_LONG;
|
||||
}
|
||||
|
||||
/**
|
||||
* 规范化数据库字段类型,去除 MySQL 等数据库的类型修饰。
|
||||
*
|
||||
* @param dataType 数据库字段类型
|
||||
* @return 规范化后的数据库字段类型
|
||||
*/
|
||||
private static String normalizeDbType(String dataType) {
|
||||
return StringUtils.trim(dataType)
|
||||
.toLowerCase()
|
||||
.replace(" unsigned", "")
|
||||
.replace(" zerofill", "");
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据整数字段长度解析 Java 类型。
|
||||
*
|
||||
|
||||
+12
-2
@@ -718,7 +718,16 @@ public class TemplateEngineUtils {
|
||||
if (StringUtils.equals(column.getJavaType(), GenConstants.TYPE_LONG)) {
|
||||
return value + "L";
|
||||
}
|
||||
if (StringUtils.equalsAny(column.getJavaType(), GenConstants.TYPE_INTEGER, GenConstants.TYPE_DOUBLE, GenConstants.TYPE_BIGDECIMAL)) {
|
||||
if (StringUtils.equals(column.getJavaType(), GenConstants.TYPE_FLOAT)) {
|
||||
return value + "F";
|
||||
}
|
||||
if (StringUtils.equals(column.getJavaType(), GenConstants.TYPE_DOUBLE)) {
|
||||
return value + "D";
|
||||
}
|
||||
if (StringUtils.equals(column.getJavaType(), GenConstants.TYPE_BIGDECIMAL)) {
|
||||
return "new java.math.BigDecimal(\"" + value + "\")";
|
||||
}
|
||||
if (StringUtils.equals(column.getJavaType(), GenConstants.TYPE_INTEGER)) {
|
||||
return value;
|
||||
}
|
||||
return "\"" + value + "\"";
|
||||
@@ -735,7 +744,8 @@ public class TemplateEngineUtils {
|
||||
if (ObjectUtil.isNull(column) || StringUtils.isBlank(value)) {
|
||||
return "undefined";
|
||||
}
|
||||
if (StringUtils.equalsAny(column.getJavaType(), GenConstants.TYPE_LONG, GenConstants.TYPE_INTEGER, GenConstants.TYPE_DOUBLE, GenConstants.TYPE_BIGDECIMAL)) {
|
||||
if (StringUtils.equalsAny(column.getJavaType(), GenConstants.TYPE_LONG, GenConstants.TYPE_INTEGER,
|
||||
GenConstants.TYPE_DOUBLE, GenConstants.TYPE_FLOAT, GenConstants.TYPE_BIGDECIMAL)) {
|
||||
return value;
|
||||
}
|
||||
return "'" + value + "'";
|
||||
|
||||
Reference in New Issue
Block a user