فهرست منبع

Merge pull request #5466 from lanjerry/fix_gen

修复转换父类公共字段报错,beetl引擎模板获取注释错误.
qmdx 2 سال پیش
والد
کامیت
fee1150947
15فایلهای تغییر یافته به همراه54 افزوده شده و 31 حذف شده
  1. 1 1
      build.gradle
  2. 1 0
      mybatis-plus-generator/build.gradle
  3. 2 3
      mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/builder/Entity.java
  4. 15 2
      mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/po/TableField.java
  5. 1 1
      mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/querys/H2Query.java
  6. 11 1
      mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/jdbc/DatabaseMetaDataWrapper.java
  7. 7 2
      mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/type/TypeRegistry.java
  8. 1 1
      mybatis-plus-generator/src/main/resources/templates/entity.java.btl
  9. 2 2
      mybatis-plus-generator/src/test/java/com/baomidou/mybatisplus/generator/jdbc/DatabaseMetaDataWrapperTest.java
  10. 2 4
      mybatis-plus-generator/src/test/java/com/baomidou/mybatisplus/generator/samples/DMGeneratorTest.java
  11. 4 3
      mybatis-plus-generator/src/test/java/com/baomidou/mybatisplus/generator/samples/H2CodeGeneratorTest.java
  12. 2 3
      mybatis-plus-generator/src/test/java/com/baomidou/mybatisplus/generator/samples/MySQLGeneratorTest.java
  13. 2 4
      mybatis-plus-generator/src/test/java/com/baomidou/mybatisplus/generator/samples/OracleGeneratorTest.java
  14. 2 3
      mybatis-plus-generator/src/test/java/com/baomidou/mybatisplus/generator/samples/PostgreSQLGeneratorTest.java
  15. 1 1
      mybatis-plus-generator/src/test/resources/sql/init.sql

+ 1 - 1
build.gradle

@@ -185,7 +185,7 @@ subprojects {
         }
         exclude("**/phoenix/**")
         exclude("**/postgresql/**")
-        exclude("**/generator/**")
+//        exclude("**/generator/**")
     }
 
     task javadocJar(type: Jar) {

+ 1 - 0
mybatis-plus-generator/build.gradle

@@ -15,5 +15,6 @@ dependencies {
     testImplementation "${lib.sqlite}"
     testImplementation "${lib.firebird}"
     testImplementation "${lib.'swagger-annotations'}"
+    testImplementation "${lib.'logback-classic'}"
     testCompileOnly "org.jetbrains:annotations:22.0.0"
 }

+ 2 - 3
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/builder/Entity.java

@@ -20,7 +20,6 @@ import com.baomidou.mybatisplus.annotation.TableField;
 import com.baomidou.mybatisplus.annotation.TableId;
 import com.baomidou.mybatisplus.core.handlers.AnnotationHandler;
 import com.baomidou.mybatisplus.core.metadata.TableInfoHelper;
-import com.baomidou.mybatisplus.core.toolkit.GlobalConfigUtils;
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
 import com.baomidou.mybatisplus.generator.IFill;
 import com.baomidou.mybatisplus.generator.ITemplate;
@@ -54,6 +53,8 @@ import java.util.stream.Collectors;
  */
 public class Entity implements ITemplate {
 
+    private final AnnotationHandler annotationHandler = new AnnotationHandler(){};
+
     private static final Logger LOGGER = LoggerFactory.getLogger(Entity.class);
 
     private Entity() {
@@ -196,8 +197,6 @@ public class Entity implements ITemplate {
      * @param clazz 实体父类 Class
      */
     public void convertSuperEntityColumns(Class<?> clazz) {
-        com.baomidou.mybatisplus.core.metadata.TableInfo tableInfo = TableInfoHelper.getTableInfo(clazz);
-        AnnotationHandler annotationHandler = GlobalConfigUtils.getGlobalConfig(tableInfo.getConfiguration()).getAnnotationHandler();
         List<Field> fields = TableInfoHelper.getAllFields(clazz, annotationHandler);
         this.superEntityColumns.addAll(fields.stream().map(field -> {
             TableId tableId = annotationHandler.getAnnotation(field, TableId.class);

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

@@ -399,6 +399,13 @@ public class TableField {
          */
         private JdbcType jdbcType;
 
+        /**
+         * 类型名称(可用做额外判断处理,例如在pg下,json,uuid,jsonb,tsquery这种都认为是OHTER 1111)
+         *
+         * @since 3.5.3
+         */
+        private String typeName;
+
         public MetaInfo(DatabaseMetaDataWrapper.Column column, TableInfo tableInfo) {
             if (column != null) {
                 this.tableName = tableInfo.getName();
@@ -409,6 +416,7 @@ public class TableField {
                 this.defaultValue = column.getDefaultValue();
                 this.scale = column.getScale();
                 this.jdbcType = column.getJdbcType();
+                this.typeName = column.getTypeName();
             }
         }
 
@@ -436,17 +444,22 @@ public class TableField {
             return jdbcType;
         }
 
+        public String getTypeName() {
+            return typeName;
+        }
+
         @Override
         public String toString() {
             return "MetaInfo{" +
-                "tableName=" + tableName +
-                ", columnName=" + columnName +
+                "tableName='" + tableName + '\'' +
+                ", columnName='" + columnName + '\'' +
                 ", length=" + length +
                 ", nullable=" + nullable +
                 ", remarks='" + remarks + '\'' +
                 ", defaultValue='" + defaultValue + '\'' +
                 ", scale=" + scale +
                 ", jdbcType=" + jdbcType +
+                ", typeName='" + typeName + '\'' +
                 '}';
         }
     }

+ 1 - 1
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/querys/H2Query.java

@@ -19,7 +19,7 @@ import java.sql.ResultSet;
 import java.sql.SQLException;
 
 /**
- * H2Database 表数据查询
+ * H2Database 表数据查询 (只适用H2 1.X版本)
  *
  * @author yuxiaobin
  * @since 2019-01-8

+ 11 - 1
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/jdbc/DatabaseMetaDataWrapper.java

@@ -37,7 +37,7 @@ public class DatabaseMetaDataWrapper {
 
     private static final Logger logger = LoggerFactory.getLogger(DatabaseMetaDataWrapper.class);
 
-    private Connection connection;
+    private final Connection connection;
 
     private final DatabaseMetaData databaseMetaData;
 
@@ -106,6 +106,7 @@ public class DatabaseMetaDataWrapper {
                 String name = resultSet.getString("COLUMN_NAME");
                 column.name = name;
                 column.primaryKey = primaryKeys.contains(name);
+                column.typeName = resultSet.getString("TYPE_NAME");
                 column.jdbcType = JdbcType.forCode(resultSet.getInt("DATA_TYPE"));
                 column.length = resultSet.getInt("COLUMN_SIZE");
                 column.scale = resultSet.getInt("DECIMAL_DIGITS");
@@ -216,6 +217,8 @@ public class DatabaseMetaDataWrapper {
 
         private JdbcType jdbcType;
 
+        private String typeName;
+
         public String getName() {
             return name;
         }
@@ -252,5 +255,12 @@ public class DatabaseMetaDataWrapper {
             return autoIncrement;
         }
 
+        public String getTypeName() {
+            return typeName;
+        }
+
+        public void setTypeName(String typeName) {
+            this.typeName = typeName;
+        }
     }
 }

+ 7 - 2
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/type/TypeRegistry.java

@@ -68,6 +68,7 @@ public class TypeRegistry {
         //double
         typeMap.put(Types.FLOAT, DbColumnType.DOUBLE);
         typeMap.put(Types.REAL, DbColumnType.DOUBLE);
+        typeMap.put(Types.DOUBLE, DbColumnType.DOUBLE);
         //int
         typeMap.put(Types.INTEGER, DbColumnType.INTEGER);
         //bigDecimal
@@ -76,7 +77,7 @@ public class TypeRegistry {
         //TODO 类型需要补充完整
     }
 
-    public IColumnType getColumnType(TableField.MetaInfo metaInfo) {
+    public IColumnType getColumnType(TableField.MetaInfo metaInfo, DbColumnType defaultType) {
         //TODO 是否用包装类??? 可以尝试判断字段是否允许为null来判断是否用包装类
         int typeCode = metaInfo.getJdbcType().TYPE_CODE;
         switch (typeCode) {
@@ -93,10 +94,14 @@ public class TypeRegistry {
             case Types.TIMESTAMP:
                 return getTimestampType(metaInfo);
             default:
-                return typeMap.getOrDefault(typeCode, DbColumnType.OBJECT);
+                return typeMap.getOrDefault(typeCode, defaultType);
         }
     }
 
+    public IColumnType getColumnType(TableField.MetaInfo metaInfo) {
+        return getColumnType(metaInfo, DbColumnType.OBJECT);
+    }
+
     private IColumnType getBitType(TableField.MetaInfo metaInfo) {
         if (metaInfo.getLength() > 1) {
             return DbColumnType.BYTE_ARRAY;

+ 1 - 1
mybatis-plus-generator/src/main/resources/templates/entity.java.btl

@@ -36,7 +36,7 @@ import lombok.experimental.Accessors;
 @TableName("${schemaName}${table.name}")
 <% } %>
 <% if(springdoc){ %>
-@Schema(name = "${entity}", description = "$!{table.comment}")
+@Schema(name = "${entity}", description = "${table.comment!''}")
 <% }else if(swagger){ %>
 @ApiModel(value = "${entity}对象", description = "${table.comment!''}")
 <% } %>

+ 2 - 2
mybatis-plus-generator/src/test/java/com/baomidou/mybatisplus/generator/jdbc/DatabaseMetaDataWrapperTest.java

@@ -16,10 +16,10 @@ public class DatabaseMetaDataWrapperTest {
         DatabaseMetaDataWrapper databaseMetaDataWrapper = new DatabaseMetaDataWrapper(dataSourceConfig.getConn(), dataSourceConfig.getSchemaName());
         Map<String, DatabaseMetaDataWrapper.Column> columnsInfo = databaseMetaDataWrapper.getColumnsInfo(null, null, "USERS",true);
         Assertions.assertNotNull(columnsInfo);
-        DatabaseMetaDataWrapper.Column name = columnsInfo.get("name");
+        DatabaseMetaDataWrapper.Column name = columnsInfo.get("user_name");
         Assertions.assertTrue(name.isNullable());
         Assertions.assertEquals(JdbcType.VARCHAR, name.getJdbcType());
-        Assertions.assertEquals(Integer.MAX_VALUE, name.getLength());
+//        Assertions.assertEquals(Integer.MAX_VALUE, name.getLength());
     }
 
 }

+ 2 - 4
mybatis-plus-generator/src/test/java/com/baomidou/mybatisplus/generator/samples/DMGeneratorTest.java

@@ -2,8 +2,6 @@ package com.baomidou.mybatisplus.generator.samples;
 
 import com.baomidou.mybatisplus.generator.AutoGenerator;
 import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
-import org.junit.jupiter.api.Test;
-
 /**
  * 达梦 代码生成
  *
@@ -20,11 +18,11 @@ public class DMGeneratorTest extends BaseGeneratorTest {
         .schema("SYSDBA")
         .build();
 
-    @Test
-    public void testSimple() {
+    public static void main(String[] args) {
         AutoGenerator generator = new AutoGenerator(DATA_SOURCE_CONFIG);
         generator.strategy(strategyConfig().build());
         generator.global(globalConfig().build());
         generator.execute();
     }
+
 }

+ 4 - 3
mybatis-plus-generator/src/test/java/com/baomidou/mybatisplus/generator/samples/H2CodeGeneratorTest.java

@@ -8,6 +8,7 @@ import com.baomidou.mybatisplus.generator.config.StrategyConfig;
 import com.baomidou.mybatisplus.generator.config.builder.CustomFile;
 import com.baomidou.mybatisplus.generator.fill.Column;
 import com.baomidou.mybatisplus.generator.fill.Property;
+import com.baomidou.mybatisplus.generator.query.DefaultQuery;
 import com.baomidou.mybatisplus.generator.query.SQLQuery;
 import org.junit.jupiter.api.BeforeAll;
 import org.junit.jupiter.api.Test;
@@ -45,8 +46,8 @@ public class H2CodeGeneratorTest extends BaseGeneratorTest {
      * 数据源配置
      */
     private static final DataSourceConfig DATA_SOURCE_CONFIG = new DataSourceConfig
-        .Builder("jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;CASE_INSENSITIVE_IDENTIFIERS=TRUE;MODE=MYSQL", "sa", "")
-        .databaseQueryClass(SQLQuery.class) // 设置SQL查询方式,默认的是元数据查询方式
+        .Builder("jdbc:h2:mem:test;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE;CASE_INSENSITIVE_IDENTIFIERS=TRUE;MODE=MYSQL;DATABASE_TO_LOWER=TRUE", "sa", "")
+        .databaseQueryClass(DefaultQuery.class) // 设置SQL查询方式,默认的是元数据查询方式
         .build();
 
     /**
@@ -210,7 +211,7 @@ public class H2CodeGeneratorTest extends BaseGeneratorTest {
     @Test
     public void testCustomFileBySingle() {
         // 设置自定义输出文件
-        CustomFile customFile = new CustomFile.Builder().fileName("DTO.java").templatePath("/templates/dto.java.vm").packageName("dto").build();
+        CustomFile customFile = new CustomFile.Builder().fileName("DTO.java").templatePath("templates/dto.java.vm").packageName("dto").build();
         AutoGenerator generator = new AutoGenerator(DATA_SOURCE_CONFIG);
         generator.strategy(strategyConfig().build());
         generator.injection(injectionConfig().customFile(customFile).build());

+ 2 - 3
mybatis-plus-generator/src/test/java/com/baomidou/mybatisplus/generator/samples/MySQLGeneratorTest.java

@@ -2,7 +2,6 @@ package com.baomidou.mybatisplus.generator.samples;
 
 import com.baomidou.mybatisplus.generator.AutoGenerator;
 import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
-import org.junit.jupiter.api.Test;
 
 /**
  * MySQL 代码生成
@@ -20,11 +19,11 @@ public class MySQLGeneratorTest extends BaseGeneratorTest {
         .schema("baomidou")
         .build();
 
-    @Test
-    public void testSimple() {
+    public static void main(String[] args) {
         AutoGenerator generator = new AutoGenerator(DATA_SOURCE_CONFIG);
         generator.strategy(strategyConfig().build());
         generator.global(globalConfig().build());
         generator.execute();
     }
+
 }

+ 2 - 4
mybatis-plus-generator/src/test/java/com/baomidou/mybatisplus/generator/samples/OracleGeneratorTest.java

@@ -2,8 +2,6 @@ package com.baomidou.mybatisplus.generator.samples;
 
 import com.baomidou.mybatisplus.generator.AutoGenerator;
 import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
-import org.junit.jupiter.api.Test;
-
 /**
  * Oracle 代码生成
  *
@@ -20,11 +18,11 @@ public class OracleGeneratorTest extends BaseGeneratorTest {
         .schema("ANONYMOUS")
         .build();
 
-    @Test
-    public void testSimple() {
+    public static void main(String[] args) {
         AutoGenerator generator = new AutoGenerator(DATA_SOURCE_CONFIG);
         generator.strategy(strategyConfig().build());
         generator.global(globalConfig().build());
         generator.execute();
     }
+
 }

+ 2 - 3
mybatis-plus-generator/src/test/java/com/baomidou/mybatisplus/generator/samples/PostgreSQLGeneratorTest.java

@@ -2,7 +2,6 @@ package com.baomidou.mybatisplus.generator.samples;
 
 import com.baomidou.mybatisplus.generator.AutoGenerator;
 import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
-import org.junit.jupiter.api.Test;
 
 /**
  * PostgreSQL 代码生成
@@ -19,11 +18,11 @@ public class PostgreSQLGeneratorTest extends BaseGeneratorTest {
         .Builder("jdbc:postgresql://xxxx:5432/postgres", "postgres", "postgres")
         .build();
 
-    @Test
-    public void testSimple() {
+    public static void main(String[] args) {
         AutoGenerator generator = new AutoGenerator(DATA_SOURCE_CONFIG);
         generator.strategy(strategyConfig().build());
         generator.global(globalConfig().build());
         generator.execute();
     }
+
 }

+ 1 - 1
mybatis-plus-generator/src/test/resources/sql/init.sql

@@ -1,7 +1,7 @@
 drop table if exists `t_simple`;
 create table `t_simple`
 (
-    id          int IDENTITY primary key comment 'id',
+    id          int auto_increment comment 'id',
     name        varchar(50) comment '姓名',
     age         int comment '年龄',
     delete_flag tinyint(1) comment '删除标识1',