Pārlūkot izejas kodu

修复生成主键字段无注解标记.

https://github.com/baomidou/mybatis-plus/issues/5439
nieqiurong 2 gadi atpakaļ
vecāks
revīzija
94d7bfe7d4

+ 4 - 0
mybatis-plus-generator/src/main/java/com/baomidou/mybatisplus/generator/config/ConstVal.java

@@ -87,4 +87,8 @@ public interface ConstVal {
     String SUPER_SERVICE_CLASS = "com.baomidou.mybatisplus.extension.service.IService";
     String SUPER_SERVICE_IMPL_CLASS = "com.baomidou.mybatisplus.extension.service.impl.ServiceImpl";
 
+    /**
+     * @see com.baomidou.mybatisplus.core.metadata.TableInfoHelper.DEFAULT_ID_NAME
+     */
+    String DEFAULT_ID_NAME = "id";
 }

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

@@ -16,6 +16,7 @@
 package com.baomidou.mybatisplus.generator.config.po;
 
 import com.baomidou.mybatisplus.core.toolkit.StringUtils;
+import com.baomidou.mybatisplus.generator.config.ConstVal;
 import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
 import com.baomidou.mybatisplus.generator.config.GlobalConfig;
 import com.baomidou.mybatisplus.generator.config.IKeyWordsHandler;
@@ -167,6 +168,10 @@ public class TableField {
         }
         if (entity.isTableFieldAnnotationEnable()) {
             this.convert = true;
+        } else {
+            if (this.keyFlag) {
+                this.convert = !ConstVal.DEFAULT_ID_NAME.equals(propertyName);
+            }
         }
         this.propertyName = propertyName;
         return this;

+ 21 - 0
mybatis-plus-generator/src/test/java/com/baomidou/mybatisplus/generator/config/po/TableFieldTest.java

@@ -125,4 +125,25 @@ public class TableFieldTest {
         Assertions.assertNotNull(new TableField(configBuilder, "updateBy").setPropertyName("createBy", DbColumnType.STRING).getFill());
         Assertions.assertNotNull(new TableField(configBuilder, "create_user").setPropertyName("createUser", DbColumnType.STRING).getFill());
     }
+
+    @Test
+    void testIdConvert(){
+        ConfigBuilder configBuilder;
+        configBuilder = new ConfigBuilder(GeneratorBuilder.packageConfig(), TableInfoTest.dataSourceConfig, GeneratorBuilder.strategyConfig(), null, GeneratorBuilder.globalConfig(), null);
+        Assertions.assertFalse(new TableField(configBuilder, "id").primaryKey(true).setPropertyName("id", DbColumnType.LONG).isConvert());
+        Assertions.assertFalse(new TableField(configBuilder, "id").primaryKey(false).setPropertyName("id", DbColumnType.LONG).isConvert());
+        Assertions.assertTrue(new TableField(configBuilder, "id").primaryKey(true).setPropertyName("ids", DbColumnType.LONG).isConvert());
+        Assertions.assertTrue(new TableField(configBuilder, "id").primaryKey(false).setPropertyName("ids", DbColumnType.LONG).isConvert());
+        Assertions.assertTrue(new TableField(configBuilder, "user_id").primaryKey(true).setPropertyName("userId", DbColumnType.LONG).isConvert());
+        Assertions.assertTrue(new TableField(configBuilder, "user_id").primaryKey(false).setPropertyName("userId", DbColumnType.LONG).isConvert());
+        // 开启tableFieldAnnotationEnable
+        configBuilder = new ConfigBuilder(GeneratorBuilder.packageConfig(), TableInfoTest.dataSourceConfig, GeneratorBuilder.strategyConfig().entityBuilder().enableTableFieldAnnotation().build(), null, GeneratorBuilder.globalConfig(), null);
+        Assertions.assertTrue(new TableField(configBuilder, "id").primaryKey(true).setPropertyName("id", DbColumnType.LONG).isConvert());
+        Assertions.assertTrue(new TableField(configBuilder, "id").primaryKey(false).setPropertyName("id", DbColumnType.LONG).isConvert());
+        Assertions.assertTrue(new TableField(configBuilder, "id").primaryKey(true).setPropertyName("ids", DbColumnType.LONG).isConvert());
+        Assertions.assertTrue(new TableField(configBuilder, "id").primaryKey(false).setPropertyName("ids", DbColumnType.LONG).isConvert());
+        Assertions.assertTrue(new TableField(configBuilder, "user_id").primaryKey(true).setPropertyName("userId", DbColumnType.LONG).isConvert());
+        Assertions.assertTrue(new TableField(configBuilder, "user_id").primaryKey(false).setPropertyName("userId", DbColumnType.LONG).isConvert());
+    }
+
 }

+ 5 - 5
mybatis-plus-generator/src/test/java/com/baomidou/mybatisplus/generator/config/po/TableInfoTest.java

@@ -127,7 +127,7 @@ public class TableInfoTest {
         strategyConfig = GeneratorBuilder.strategyConfig();
         configBuilder = new ConfigBuilder(GeneratorBuilder.packageConfig(), dataSourceConfig, strategyConfig, null, GeneratorBuilder.globalConfig(), null);
         tableInfo = new TableInfo(configBuilder, "user");
-        tableInfo.addField(new TableField(configBuilder, "u_id").setColumnName("u_id").setPropertyName("uid", DbColumnType.LONG).primaryKey(true));
+        tableInfo.addField(new TableField(configBuilder, "u_id").setColumnName("u_id").primaryKey(true).setPropertyName("uid", DbColumnType.LONG));
         tableInfo.importPackage();
         Assertions.assertEquals(3, tableInfo.getImportPackages().size());
         Assertions.assertTrue(tableInfo.getImportPackages().contains(Serializable.class.getName()));
@@ -147,7 +147,7 @@ public class TableInfoTest {
         strategyConfig = GeneratorBuilder.strategyConfigBuilder().entityBuilder().logicDeleteColumnName("delete_flag").build();
         configBuilder = new ConfigBuilder(GeneratorBuilder.packageConfig(), dataSourceConfig, strategyConfig, null, GeneratorBuilder.globalConfig(), null);
         tableInfo = new TableInfo(configBuilder, "user");
-        tableInfo.addField(new TableField(configBuilder, "u_id").setColumnName("u_id").setPropertyName("uid", DbColumnType.LONG).primaryKey(true));
+        tableInfo.addField(new TableField(configBuilder, "u_id").setColumnName("u_id").primaryKey(true).setPropertyName("uid", DbColumnType.LONG));
         tableInfo.addField(new TableField(configBuilder, "delete_flag").setColumnName("delete_flag").setPropertyName("deleteFlag", DbColumnType.BOOLEAN));
         tableInfo.importPackage();
         Assertions.assertEquals(4, tableInfo.getImportPackages().size());
@@ -167,7 +167,7 @@ public class TableInfoTest {
         strategyConfig = GeneratorBuilder.strategyConfig();
         configBuilder = new ConfigBuilder(GeneratorBuilder.packageConfig(), dataSourceConfig, strategyConfig.entityBuilder().idType(IdType.ASSIGN_ID).build(), null, null, null);
         tableInfo = new TableInfo(configBuilder, "user").setHavePrimaryKey(true);
-        tableInfo.addField(new TableField(configBuilder, "u_id").setColumnName("u_id").setPropertyName("uid", DbColumnType.LONG).primaryKey(true));
+        tableInfo.addField(new TableField(configBuilder, "u_id").setColumnName("u_id").primaryKey(true).setPropertyName("uid", DbColumnType.LONG));
         tableInfo.importPackage();
         Assertions.assertEquals(3, tableInfo.getImportPackages().size());
         Assertions.assertTrue(tableInfo.getImportPackages().contains(Serializable.class.getName()));
@@ -177,7 +177,7 @@ public class TableInfoTest {
         strategyConfig = GeneratorBuilder.strategyConfig().entityBuilder().addTableFills(new Column("create_time", FieldFill.DEFAULT)).build();
         configBuilder = new ConfigBuilder(GeneratorBuilder.packageConfig(), dataSourceConfig, strategyConfig, null, GeneratorBuilder.globalConfig(), null);
         tableInfo = new TableInfo(configBuilder, "user").setHavePrimaryKey(true);
-        tableInfo.addField(new TableField(configBuilder, "u_id").setColumnName("u_id").setPropertyName("uid", DbColumnType.LONG).primaryKey(true));
+        tableInfo.addField(new TableField(configBuilder, "u_id").setColumnName("u_id").primaryKey(true).setPropertyName("uid", DbColumnType.LONG));
         tableInfo.addField(new TableField(configBuilder, "create_time").setColumnName("create_time").setPropertyName("createTime", DbColumnType.DATE));
         tableInfo.importPackage();
         Assertions.assertEquals(6, tableInfo.getImportPackages().size());
@@ -191,7 +191,7 @@ public class TableInfoTest {
         strategyConfig = GeneratorBuilder.strategyConfigBuilder().entityBuilder().versionColumnName("version").build();
         configBuilder = new ConfigBuilder(GeneratorBuilder.packageConfig(), dataSourceConfig, strategyConfig, null, GeneratorBuilder.globalConfig(), null);
         tableInfo = new TableInfo(configBuilder, "user").setHavePrimaryKey(true);
-        tableInfo.addField(new TableField(configBuilder, "u_id").setPropertyName("uid", DbColumnType.LONG).primaryKey(true));
+        tableInfo.addField(new TableField(configBuilder, "u_id").primaryKey(true).setPropertyName("uid", DbColumnType.LONG));
         tableInfo.addField(new TableField(configBuilder, "version").setPropertyName("version", DbColumnType.LONG));
         tableInfo.importPackage();
         Assertions.assertEquals(4, tableInfo.getImportPackages().size());