diff --git a/front/public/velocity/java.json b/front/public/velocity/java.json index 38f64ca873ad21335fab73f24c798b44089b2107..28e970a51d9ca4c50ee7dd07263040dec5ee7df3 100644 --- a/front/public/velocity/java.json +++ b/front/public/velocity/java.json @@ -165,6 +165,14 @@ { "expression": "${column.comment}", "text": "字段注释" + }, + { + "expression": "${column.maxLength}", + "text": "字段长度" + }, + { + "expression": "${column.scale}", + "text": "小数位长度" } ] } diff --git a/gen/src/main/java/com/gitee/gen/gen/ColumnDefinition.java b/gen/src/main/java/com/gitee/gen/gen/ColumnDefinition.java index 04b3174d17996592d73517a73663e93f66d640ba..6571b0dadc890bca72707f303eebe4a350a42d2e 100644 --- a/gen/src/main/java/com/gitee/gen/gen/ColumnDefinition.java +++ b/gen/src/main/java/com/gitee/gen/gen/ColumnDefinition.java @@ -27,6 +27,30 @@ public class ColumnDefinition { * 字段注释 */ private String comment; + /** + * 字段长度 + */ + private Integer maxLength; + /** + * 小数位长度 + */ + private Integer scale; + + public void setMaxLength(Integer maxLength) { + this.maxLength = maxLength; + } + + public void setScale(Integer scale) { + this.scale = scale; + } + + public Integer getMaxLength() { + return maxLength; + } + + public Integer getScale() { + return scale; + } /** * 获得基本类型,int,float diff --git a/gen/src/main/java/com/gitee/gen/gen/mysql/MySqlColumnSelector.java b/gen/src/main/java/com/gitee/gen/gen/mysql/MySqlColumnSelector.java index b808d81e1a36dedb87b728ca94807d7560edcf7e..13e0dfca0d71d9e139b850ee8ee4a8c262c77aad 100644 --- a/gen/src/main/java/com/gitee/gen/gen/mysql/MySqlColumnSelector.java +++ b/gen/src/main/java/com/gitee/gen/gen/mysql/MySqlColumnSelector.java @@ -5,6 +5,7 @@ import com.gitee.gen.gen.ColumnSelector; import com.gitee.gen.gen.GeneratorConfig; import com.gitee.gen.gen.TypeFormatter; import com.gitee.gen.util.FieldUtil; +import org.apache.commons.lang.StringUtils; import java.util.Map; import java.util.Set; @@ -17,7 +18,22 @@ public class MySqlColumnSelector extends ColumnSelector { private static final TypeFormatter TYPE_FORMATTER = new MySqlTypeFormatter(); - private static final String SHOW_SQL = "SHOW FULL COLUMNS FROM `%s`"; + private static final String SHOW_SQL = " SELECT " + + " COLUMN_NAME AS 'Field', " + + " COLUMN_DEFAULT AS 'Default', " + + " IS_NULLABLE AS 'Null', " + + " DATA_TYPE AS 'DataType', " + + " CASE DATA_TYPE " + + " WHEN 'int' THEN NUMERIC_PRECISION " + + " WHEN 'varchar' THEN CHARACTER_MAXIMUM_LENGTH " + + " END AS 'MaxLength', " + + " IFNULL(NUMERIC_SCALE,0) AS 'Scale', " + + " COLUMN_TYPE AS 'Type', " + + " COLUMN_KEY 'KEY', " + + " EXTRA AS 'Extra', " + + " COLUMN_COMMENT AS 'Comment' " + + " FROM information_schema.`COLUMNS` " + + " WHERE 1=1 AND TABLE_SCHEMA = '%s' AND TABLE_NAME = '%s' "; public MySqlColumnSelector(GeneratorConfig generatorConfig) { super(generatorConfig); @@ -28,36 +44,42 @@ public class MySqlColumnSelector extends ColumnSelector { */ @Override protected String getColumnInfoSQL(String tableName) { - return String.format(SHOW_SQL, tableName); + return String.format(SHOW_SQL, getGeneratorConfig().getDbName(), tableName); } - + /* * {FIELD=username, EXTRA=, COMMENT=用户名, COLLATION=utf8_general_ci, PRIVILEGES=select,insert,update,references, KEY=PRI, NULL=NO, DEFAULT=null, TYPE=varchar(20)} */ @Override protected ColumnDefinition buildColumnDefinition(Map rowMap){ Set columnSet = rowMap.keySet(); - + for (String columnInfo : columnSet) { rowMap.put(columnInfo.toUpperCase(), rowMap.get(columnInfo)); } - + ColumnDefinition columnDefinition = new ColumnDefinition(); columnDefinition.setColumnName(FieldUtil.convertString(rowMap.get("FIELD"))); - + boolean isIdentity = "auto_increment".equalsIgnoreCase(FieldUtil.convertString(rowMap.get("EXTRA"))); columnDefinition.setIsIdentity(isIdentity); - + boolean isPk = "PRI".equalsIgnoreCase(FieldUtil.convertString(rowMap.get("KEY"))); columnDefinition.setIsPk(isPk); - + String type = FieldUtil.convertString(rowMap.get("TYPE")); columnDefinition.setType(TYPE_FORMATTER.format(type)); - + columnDefinition.setComment(FieldUtil.convertString(rowMap.get("COMMENT"))); - + + String maxLength = FieldUtil.convertString(rowMap.get("MAXLENGTH")); + columnDefinition.setMaxLength(new Integer(StringUtils.isEmpty(maxLength) ? "0" : maxLength)); + + String scale = FieldUtil.convertString(rowMap.get("SCALE")); + columnDefinition.setScale(new Integer(StringUtils.isEmpty(scale) ? "0" : scale)); + return columnDefinition; } -} +} \ No newline at end of file diff --git a/gen/src/main/java/com/gitee/gen/gen/oracle/OracleColumnSelector.java b/gen/src/main/java/com/gitee/gen/gen/oracle/OracleColumnSelector.java index 987496a0263bc0fbdf0ef78c219b4a51ed3e60e4..f4ea5150af12ab2caf97b940e9853a26b689e22c 100644 --- a/gen/src/main/java/com/gitee/gen/gen/oracle/OracleColumnSelector.java +++ b/gen/src/main/java/com/gitee/gen/gen/oracle/OracleColumnSelector.java @@ -18,7 +18,7 @@ public class OracleColumnSelector extends ColumnSelector { private static final TypeFormatter TYPE_FORMATTER = new OracleTypeFormatter(); // private static final String COLUMN_SQL = "select " -// + " utc.column_name as FIELD,utc.data_type TYPE, utc.data_scale SCALE, utc.data_length 最大长度, " +// + " utc.column_name as FIELD,utc.data_type TYPE, utc.data_scale SCALE, utc.data_length MAXLENGTH, " // + " CASE utc.nullable WHEN 'N' THEN '否' ELSE '是' END 可空, " // + " utc.data_default 默认值,ucc.comments COMMENTS,UTC.table_name 表名, " // + " CASE UTC.COLUMN_NAME " @@ -39,7 +39,7 @@ public class OracleColumnSelector extends ColumnSelector { // + " column_id "; private static final String COLUMN_SQL = " SELECT " + - " atc.COLUMN_NAME FIELD, atc.DATA_TYPE TYPE, atc.DATA_SCALE SCALE, atc.DATA_LENGTH 最大长度, " + + " atc.COLUMN_NAME FIELD, atc.DATA_TYPE TYPE, atc.DATA_SCALE SCALE, atc.DATA_LENGTH MAXLENGTH, " + " CASE atc.NULLABLE WHEN 'N' THEN '否' ELSE '是' END 可空, " + " atc.DATA_DEFAULT 默认值, acc.COMMENTS COMMENTS, atc.TABLE_NAME 表名, " + " CASE atc.COLUMN_NAME " + @@ -66,24 +66,24 @@ public class OracleColumnSelector extends ColumnSelector { String owner = this.getGeneratorConfig().getSchemaName(); return String.format(COLUMN_SQL, tableName, owner, tableName, owner); } - + @Override protected ColumnDefinition buildColumnDefinition(Map rowMap){ Set columnSet = rowMap.keySet(); - + for (String columnInfo : columnSet) { rowMap.put(columnInfo.toUpperCase(), rowMap.get(columnInfo)); } - + ColumnDefinition columnDefinition = new ColumnDefinition(); - + columnDefinition.setColumnName(FieldUtil.convertString(rowMap.get("FIELD"))); columnDefinition.setIsIdentity(false); - + boolean isPk = "true".equalsIgnoreCase(FieldUtil.convertString(rowMap.get("KEY"))); columnDefinition.setIsPk(isPk); - + String type = FieldUtil.convertString(rowMap.get("TYPE")); // 如果是number if (StringUtils.containsIgnoreCase(type, "number")) { @@ -96,11 +96,17 @@ public class OracleColumnSelector extends ColumnSelector { type = "0".equals(scale) ? "int" : "decimal"; } columnDefinition.setType(TYPE_FORMATTER.format(type)); - + columnDefinition.setComment(FieldUtil.convertString(rowMap.get("COMMENTS"))); + String maxLength = FieldUtil.convertString(rowMap.get("MAXLENGTH")); + columnDefinition.setMaxLength(new Integer(StringUtils.isEmpty(maxLength) ? "0" : maxLength)); + + String scale = FieldUtil.convertString(rowMap.get("SCALE")); + columnDefinition.setScale(new Integer(StringUtils.isEmpty(scale) ? "0" : scale)); + return columnDefinition; } - -} + +} \ No newline at end of file