瀏覽代碼

修复生成器建表不建字段的引发的空指针异常.

https://github.com/baomidou/mybatis-plus/issues/2598
nieqiuqiu 5 年之前
父節點
當前提交
cce7980267

+ 1 - 1
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/builder/ConfigBuilder.java

@@ -398,7 +398,7 @@ public class ConfigBuilder {
             // 无父类开启 AR 模式
             tableInfo.getImportPackages().add(com.baomidou.mybatisplus.extension.activerecord.Model.class.getCanonicalName());
         }
-        if (null != globalConfig.getIdType() && tableInfo.getFields().stream().anyMatch(TableField::isKeyFlag)) {
+        if (null != globalConfig.getIdType() && tableInfo.hasPrimaryKey()) {
             // 指定需要 IdType 场景
             tableInfo.getImportPackages().add(com.baomidou.mybatisplus.annotation.IdType.class.getCanonicalName());
             tableInfo.getImportPackages().add(com.baomidou.mybatisplus.annotation.TableId.class.getCanonicalName());

+ 11 - 1
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/po/TableInfo.java

@@ -92,8 +92,8 @@ public class TableInfo {
     }
 
     public TableInfo setFields(List<TableField> fields) {
+        this.fields = fields;
         if (CollectionUtils.isNotEmpty(fields)) {
-            this.fields = fields;
             // 收集导入包信息
             for (TableField field : fields) {
                 if (null != field.getColumnType() && null != field.getColumnType().getPkg()) {
@@ -157,4 +157,14 @@ public class TableInfo {
         }
         return fieldNames;
     }
+
+    /**
+     * 是否含有主键
+     *
+     * @return 是否含有主键
+     * @since 3.3.3
+     */
+    public boolean hasPrimaryKey() {
+        return this.fields.stream().anyMatch(TableField::isKeyFlag);
+    }
 }