From 7dda5963b14915a9aceee41543d84575eaf69486 Mon Sep 17 00:00:00 2001 From: yaochen4 Date: Mon, 3 Jul 2023 17:58:55 +0800 Subject: [PATCH 1/2] =?UTF-8?q?bugfix:=20=E4=BF=AE=E6=94=B9bug#I7I08X,=20?= =?UTF-8?q?=E6=9C=89=E7=88=B6=E5=AD=90=E7=BB=A7=E6=89=BF=E6=97=B6=EF=BC=8C?= =?UTF-8?q?=E5=A6=82=E6=9E=9C=E6=9C=89=E7=9B=B8=E5=90=8C=E5=B1=9E=E6=80=A7?= =?UTF-8?q?=EF=BC=8C=E7=94=9F=E6=88=90=E7=9A=84=E7=B1=BB=E4=B8=AD=E4=B9=9F?= =?UTF-8?q?=E4=BC=9A=E6=9C=89=E7=9B=B8=E5=90=8C=E7=9A=842=E4=B8=AA?= =?UTF-8?q?=E5=B1=9E=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../processor/MybatisFlexProcessor.java | 8 ++++++-- .../processor/builder/ContentBuilder.java | 3 ++- .../processor/entity/ColumnInfo.java | 14 ++++++++++++++ .../java/com/mybatisflex/test/AccountVV.java | 19 +++++++++++++++++++ 4 files changed, 41 insertions(+), 3 deletions(-) create mode 100644 mybatis-flex-test/mybatis-flex-native-test/src/main/java/com/mybatisflex/test/AccountVV.java diff --git a/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/MybatisFlexProcessor.java b/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/MybatisFlexProcessor.java index e3a8e856..1ec4cba5 100644 --- a/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/MybatisFlexProcessor.java +++ b/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/MybatisFlexProcessor.java @@ -149,7 +149,11 @@ public class MybatisFlexProcessor extends AbstractProcessor { assert table != null; // 类属性 - List columnInfoList = new LinkedList<>(); + //修改bug https://gitee.com/mybatis-flex/mybatis-flex/issues/I7I08X + //会执行 subClass subClass + //再执行 superClass superClass + //按照顺序使用,子类有的属性,父类放不进去,也就形成了子类覆盖父类 + Collection columnInfoList = new HashSet<>(); // 默认查询的属性,非 isLarge 字段 List defaultColumns = new ArrayList<>(); @@ -220,7 +224,7 @@ public class MybatisFlexProcessor extends AbstractProcessor { return SourceVersion.latestSupported(); } - private void fillColumnInfoList(List columnInfoList, List defaultColumns, TypeElement baseElement, TypeElement classElement, boolean camelToUnderline) { + private void fillColumnInfoList(Collection columnInfoList, List defaultColumns, TypeElement baseElement, TypeElement classElement, boolean camelToUnderline) { for (Element fieldElement : classElement.getEnclosedElements()) { // all fields diff --git a/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/builder/ContentBuilder.java b/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/builder/ContentBuilder.java index a42651e9..def6dc20 100644 --- a/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/builder/ContentBuilder.java +++ b/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/builder/ContentBuilder.java @@ -20,6 +20,7 @@ import com.mybatisflex.annotation.Table; import com.mybatisflex.processor.entity.ColumnInfo; import com.mybatisflex.processor.util.StrUtil; +import java.util.Collection; import java.util.List; import java.util.StringJoiner; @@ -56,7 +57,7 @@ public class ContentBuilder { public static String buildTableDef(Table table, String entityClass, String entityClassName, boolean allInTablesEnable, String tableDefPackage, String tableDefClassName, String tableDefPropertiesNameStyle, String tableDefInstanceSuffix, - List columnInfoList, List defaultColumns) { + Collection columnInfoList, List defaultColumns) { StringBuilder content = new StringBuilder("package "); content.append(tableDefPackage).append(";\n\n"); content.append("import com.mybatisflex.core.query.QueryColumn;\n"); diff --git a/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/entity/ColumnInfo.java b/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/entity/ColumnInfo.java index 7ec08600..813e2fea 100644 --- a/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/entity/ColumnInfo.java +++ b/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/entity/ColumnInfo.java @@ -16,6 +16,8 @@ package com.mybatisflex.processor.entity; +import java.util.Objects; + /** * 列详细信息。 * @@ -63,4 +65,16 @@ public class ColumnInfo { this.alias = alias; } + @Override + public boolean equals(Object o) { + if (this == o) return true; + if (o == null || getClass() != o.getClass()) return false; + ColumnInfo that = (ColumnInfo) o; + return Objects.equals(property, that.property); + } + + @Override + public int hashCode() { + return Objects.hash(property); + } } \ No newline at end of file diff --git a/mybatis-flex-test/mybatis-flex-native-test/src/main/java/com/mybatisflex/test/AccountVV.java b/mybatis-flex-test/mybatis-flex-native-test/src/main/java/com/mybatisflex/test/AccountVV.java new file mode 100644 index 00000000..607f62d6 --- /dev/null +++ b/mybatis-flex-test/mybatis-flex-native-test/src/main/java/com/mybatisflex/test/AccountVV.java @@ -0,0 +1,19 @@ +package com.mybatisflex.test; + +import com.mybatisflex.annotation.*; + +import java.io.Serializable; + +@Table(value = "tb_account_vv", dataSource = "ds2", onSet = AccountOnSetListener.class) +public class AccountVV extends Account implements Serializable { + + private static final long serialVersionUID = 1L; + + @Id(keyType = KeyType.Auto) + private Long id; + + private String userName; + + private int age; + private int ageVV; +} \ No newline at end of file From 113a73d17069c03e0d676ed805ffa7df6c1c638a Mon Sep 17 00:00:00 2001 From: yaochen4 Date: Mon, 3 Jul 2023 18:23:18 +0800 Subject: [PATCH 2/2] =?UTF-8?q?bugfix:=20=E4=BF=AE=E6=94=B9bug#I7I08X=20?= =?UTF-8?q?=E4=BF=AE=E6=94=B9equals=E5=92=8Chashcode=EF=BC=8C=E5=8A=A0?= =?UTF-8?q?=E5=85=A5=E5=B1=9E=E6=80=A7=E6=89=80=E5=9C=A8=E7=B1=BB=E5=90=8D?= =?UTF-8?q?=EF=BC=8C=E6=96=B9=E4=BE=BF=E5=90=8E=E7=BB=AD=E6=89=A9=E5=B1=95?= =?UTF-8?q?=E4=BD=BF=E7=94=A8=20=E8=87=AA=E6=B5=8B=E5=AE=8C=E6=88=90?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../processor/MybatisFlexProcessor.java | 1 + .../mybatisflex/processor/entity/ColumnInfo.java | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 2 deletions(-) diff --git a/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/MybatisFlexProcessor.java b/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/MybatisFlexProcessor.java index 1ec4cba5..3170d618 100644 --- a/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/MybatisFlexProcessor.java +++ b/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/MybatisFlexProcessor.java @@ -300,6 +300,7 @@ public class MybatisFlexProcessor extends AbstractProcessor { columnInfo.setProperty(property); columnInfo.setColumn(columnName); columnInfo.setAlias(alias); + columnInfo.setFullClassName(baseElement.getQualifiedName().toString()); columnInfoList.add(columnInfo); diff --git a/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/entity/ColumnInfo.java b/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/entity/ColumnInfo.java index 813e2fea..758198e1 100644 --- a/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/entity/ColumnInfo.java +++ b/mybatis-flex-processor/src/main/java/com/mybatisflex/processor/entity/ColumnInfo.java @@ -41,6 +41,8 @@ public class ColumnInfo { */ private String[] alias; + private String fullClassName; + public String getProperty() { return property; } @@ -65,16 +67,24 @@ public class ColumnInfo { this.alias = alias; } + public String getFullClassName() { + return fullClassName; + } + + public void setFullClassName(String fullClassName) { + this.fullClassName = fullClassName; + } + @Override public boolean equals(Object o) { if (this == o) return true; if (o == null || getClass() != o.getClass()) return false; ColumnInfo that = (ColumnInfo) o; - return Objects.equals(property, that.property); + return Objects.equals(property, that.property) && Objects.equals(fullClassName, that.fullClassName); } @Override public int hashCode() { - return Objects.hash(property); + return Objects.hash(property, fullClassName); } } \ No newline at end of file