瀏覽代碼

增加对虚拟列的属性获取.

nieqiurong 10 月之前
父節點
當前提交
a4d6259fcc

+ 9 - 0
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/po/TableField.java

@@ -405,6 +405,13 @@ public class TableField {
          */
         private String typeName;
 
+        /**
+         * 是否为生成列
+         *
+         * @since 3.5.8
+         */
+        private boolean generatedColumn;
+
         public MetaInfo(DatabaseMetaDataWrapper.Column column, TableInfo tableInfo) {
             if (column != null) {
                 this.tableName = tableInfo.getName();
@@ -416,6 +423,7 @@ public class TableField {
                 this.scale = column.getScale();
                 this.jdbcType = column.getJdbcType();
                 this.typeName = column.getTypeName();
+                this.generatedColumn = column.isGeneratedColumn();
             }
         }
 
@@ -467,6 +475,7 @@ public class TableField {
                 ", scale=" + scale +
                 ", jdbcType=" + jdbcType +
                 ", typeName='" + typeName + '\'' +
+                ", generatedColumn=" + generatedColumn +
                 '}';
         }
     }

+ 13 - 5
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/jdbc/DatabaseMetaDataWrapper.java

@@ -118,11 +118,8 @@ public class DatabaseMetaDataWrapper {
                 column.remarks = formatComment(resultSet.getString("REMARKS"));
                 column.defaultValue = resultSet.getString("COLUMN_DEF");
                 column.nullable = resultSet.getInt("NULLABLE") == DatabaseMetaData.columnNullable;
-                try {
-                    column.autoIncrement = "YES".equals(resultSet.getString("IS_AUTOINCREMENT"));
-                } catch (SQLException sqlException) {
-                    //TODO 目前测试在oracle旧驱动下存在问题,降级成false.
-                }
+                column.generatedColumn = isGeneratedOrAutoIncrementColumn(resultSet, "IS_GENERATEDCOLUMN");
+                column.autoIncrement = isGeneratedOrAutoIncrementColumn(resultSet, "IS_AUTOINCREMENT");
                 columnsInfoMap.put(name.toLowerCase(), column);
             }
             return Collections.unmodifiableMap(columnsInfoMap);
@@ -131,6 +128,15 @@ public class DatabaseMetaDataWrapper {
         }
     }
 
+    private boolean isGeneratedOrAutoIncrementColumn(ResultSet resultSet, String columnLabel) {
+        try {
+            return "YES".equals(resultSet.getString(columnLabel));
+        } catch (SQLException e) {
+            // ignore
+        }
+        return false;
+    }
+
     public String formatComment(String comment) {
         return StringUtils.isBlank(comment) ? StringPool.EMPTY : comment.replaceAll("\r\n", "\t");
     }
@@ -214,5 +220,7 @@ public class DatabaseMetaDataWrapper {
         @Setter
         private String typeName;
 
+        private boolean generatedColumn;
+
     }
 }