diff --git a/mybatis-plus-join-annotation/src/main/java/com/github/yulichang/annotation/Table.java b/mybatis-plus-join-annotation/src/main/java/com/github/yulichang/annotation/Table.java index a29c5a2..8e7b5a2 100644 --- a/mybatis-plus-join-annotation/src/main/java/com/github/yulichang/annotation/Table.java +++ b/mybatis-plus-join-annotation/src/main/java/com/github/yulichang/annotation/Table.java @@ -21,8 +21,9 @@ import java.lang.annotation.Target; * 支持Ognl语法字段说明
* Ognl上下文 * * 指定开头 Ognl# 这不是ognl语法,这是MPJ规定的 用于区分 ognl还是String.format *

@@ -55,7 +56,7 @@ public @interface Table { *

* 支持Ognl 默认使用String.format() */ - String packageName() default "%s.apt"; + String classPackage() default "%s.apt"; /** * 是否在Tables中生成对应的类字段 @@ -67,13 +68,13 @@ public @interface Table { *

* 支持Ognl 默认使用String.format() */ - String tablesPackageName() default "%s.tables"; + String tablesClassPackage() default "%s.tables"; /** * Tables中的字段名 默认大写的类名 *

* 支持Ognl 默认使用String.format() */ - String tablesName() default "%S"; + String tablesClassName() default "%S"; } \ No newline at end of file diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/apt/Column.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/apt/Column.java index 4043182..4eddea2 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/apt/Column.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/apt/Column.java @@ -1,20 +1,31 @@ package com.github.yulichang.apt; -import lombok.AllArgsConstructor; -import lombok.Data; +import lombok.Getter; import java.io.Serializable; import java.util.function.Supplier; -@Data -@AllArgsConstructor +/** + * @author yulichang + * @since 1.5.0 + */ +@Getter public class Column implements Serializable { - private BaseColumn root; + private final BaseColumn root; - private Class clazz; + private final String property; - private String property; + public Column(BaseColumn root, String property) { + this.root = root; + this.property = property; + } - private Supplier alias; + public Class getClazz() { + return root.getColumnClass(); + } + + public Supplier getAlias() { + return root::getAlias; + } } \ No newline at end of file diff --git a/mybatis-plus-join-core/src/main/java/com/github/yulichang/apt/OgnlRoot.java b/mybatis-plus-join-core/src/main/java/com/github/yulichang/apt/OgnlRoot.java index 1560e91..4574998 100644 --- a/mybatis-plus-join-core/src/main/java/com/github/yulichang/apt/OgnlRoot.java +++ b/mybatis-plus-join-core/src/main/java/com/github/yulichang/apt/OgnlRoot.java @@ -13,31 +13,15 @@ import java.util.Objects; @Getter public class OgnlRoot { - private final ClassInfo classInfo; + private final String className; - private final StringHelper stringHelper; + private final String classPackage; - public OgnlRoot(String className, String packageName) { - this.classInfo = new ClassInfo(className, packageName); - this.stringHelper = new StringHelper(); - } + private final StringHelper util = new StringHelper(); - @Getter - public static class ClassInfo { - /** - * 类名 - */ - public final String className; - /** - * 包名 - */ - public final String packageName; - - - public ClassInfo(String className, String packageName) { - this.className = className; - this.packageName = packageName; - } + public OgnlRoot(String className, String classPackage) { + this.className = className; + this.classPackage = classPackage; } @SuppressWarnings("unused") diff --git a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/AptWrapperTest.java b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/AptWrapperTest.java index dff5e0c..2e67929 100644 --- a/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/AptWrapperTest.java +++ b/mybatis-plus-join-test/test-join/src/test/java/com/github/yulichang/test/join/apt/AptWrapperTest.java @@ -29,6 +29,8 @@ import java.util.List; import java.util.Map; import java.util.Objects; +import static com.github.yulichang.test.join.entity.tables.Tables.*; + /** * 连表测试类 *

@@ -64,7 +66,7 @@ class AptWrapperTest { void testSelectSort() { ThreadLocalUtils.set("SELECT t.id, t.user_id, t.tenant_id FROM user_tenant t WHERE t.tenant_id = 1"); - UserTenantDOCol ut = new UserTenantDOCol(); + UserTenantDOCol ut = USERTENANTDO; AptQueryWrapper lambda = JoinWrappers.apt(ut) .selectAsClass(ut, UserTenantDTO.class); @@ -81,7 +83,7 @@ class AptWrapperTest { @Test void testSimple() { - UserTenantDOCol ut = new UserTenantDOCol(); + UserTenantDOCol ut = USERTENANTDO; AptQueryWrapper lambda = JoinWrappers.apt(ut); lambda.selectAs(ut.idea, UserTenantDO::getIdea); List list = userTenantMapper.selectList(lambda); @@ -124,9 +126,9 @@ class AptWrapperTest { " AND (t.id <= ?)\n" + "ORDER BY t.id DESC"); - UserDOCol u = new UserDOCol(); - AddressDOCol addr = new AddressDOCol(); - AreaDOCol ar = new AreaDOCol(); + UserDOCol u = USERDO; + AddressDOCol addr = ADDRESSDO; + AreaDOCol ar = AREADO; AptQueryWrapper wrapper = new AptQueryWrapper<>(u) .selectAll() @@ -170,9 +172,9 @@ class AptWrapperTest { " AND (t.id <= ?)\n" + "ORDER BY t.id DESC"); - UserDOCol u = new UserDOCol(); - AddressDOCol addr = new AddressDOCol(); - AreaDOCol ar = new AreaDOCol(); + UserDOCol u = USERDO; + AddressDOCol addr = ADDRESSDO; + AreaDOCol ar = AREADO; AptQueryWrapper wrapper = new AptQueryWrapper<>(u) .selectAll() @@ -222,9 +224,9 @@ class AptWrapperTest { " AND t2.del = false\n" + "ORDER BY t.id DESC"); - UserDOCol u = new UserDOCol(); - AddressDOCol addr = new AddressDOCol(); - AreaDOCol ar = new AreaDOCol(); + UserDOCol u = USERDO; + AddressDOCol addr = ADDRESSDO; + AreaDOCol ar = AREADO; AptQueryWrapper wrapper = new AptQueryWrapper<>(u) .selectAll() @@ -252,9 +254,9 @@ class AptWrapperTest { " AND t1.del = false\n" + " AND t2.del = false"); - UserDOCol u = new UserDOCol(); - AddressDOCol addr = new AddressDOCol(); - AreaDOCol ar = new AreaDOCol(); + UserDOCol u = USERDO; + AddressDOCol addr = ADDRESSDO; + AreaDOCol ar = AREADO; //基本数据类型 和 String AptQueryWrapper wrapper = new AptQueryWrapper<>(u) @@ -306,9 +308,9 @@ class AptWrapperTest { " AND (t.id <= ?)\n" + "ORDER BY t.id ASC, t.`name` ASC"); - UserDOCol u = new UserDOCol(); - AddressDOCol addr = new AddressDOCol(); - AreaDOCol ar = new AreaDOCol(); + UserDOCol u = USERDO; + AddressDOCol addr = ADDRESSDO; + AreaDOCol ar = AREADO; UserDO userDO = new UserDO(); userDO.setId(1); @@ -438,7 +440,7 @@ class AptWrapperTest { "WHERE t.del = false\n" + " AND (t.id > ?)"); - UserDOCol u = new UserDOCol(); + UserDOCol u = USERDO; UserDOCol ua = new UserDOCol(); //自连接 diff --git a/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/EntityProcessor.java b/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/EntityProcessor.java index 2544685..eaed2b7 100644 --- a/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/EntityProcessor.java +++ b/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/EntityProcessor.java @@ -115,7 +115,7 @@ public class EntityProcessor extends AbstractProcessor { tableInfo.setFields(fieldInfos); StringBuilderHelper content = new StringBuilderHelper() - .addPackage(tableInfo.getTagPackage()) + .addPackage(tableInfo.getTagClassPackage()) .newLine() .addImport(BaseColumn.class.getName()) .addImport(Column.class.getName()) @@ -124,12 +124,12 @@ public class EntityProcessor extends AbstractProcessor { .addClass(tableInfo.getClassComment(), tableInfo.getTagClassName(), BaseColumn.class.getSimpleName() + "<" + tableInfo.getSimpleClassName() + ">", c -> c - .addDefaultField(tableInfo.getSimpleClassName()) + .addDefaultField() .addConstructor(tableInfo) .addFields(tableInfo) .addMethod(tableInfo) ); - writerFile(tableInfo.getTagPackage() + "." + tableInfo.getTagClassName(), content.getContent()); + writerFile(tableInfo.getTagClassPackage() + "." + tableInfo.getTagClassName(), content.getContent()); return tableInfo; } @@ -142,7 +142,7 @@ public class EntityProcessor extends AbstractProcessor { content.addPackage(tagPackage); content.newLine(); // import - tableInfos.forEach(tableInfo -> content.addImport(tableInfo.getTagPackage() + "." + tableInfo.getTagClassName())); + tableInfos.forEach(tableInfo -> content.addImport(tableInfo.getTagClassPackage() + "." + tableInfo.getTagClassName())); content.newLine(); // class String tables = "Tables"; @@ -220,8 +220,8 @@ public class EntityProcessor extends AbstractProcessor { public StringBuilderHelper addFields(TableInfo tableInfo) { tableInfo.getFields().forEach(fieldInfo -> { addComment("\t", fieldInfo.getComment()); - sb.append(String.format("\tpublic final Column %s = new Column(this, %s.class, \"%s\", () -> this._alias_q2Gv$);\n", - fieldInfo.getProperty(), tableInfo.getSimpleClassName(), fieldInfo.getProperty())); + sb.append(String.format("\tpublic final Column %s = new Column(this, \"%s\");\n", + fieldInfo.getProperty(), fieldInfo.getProperty())); newLine(); }); return this; @@ -239,9 +239,7 @@ public class EntityProcessor extends AbstractProcessor { return this; } - public StringBuilderHelper addDefaultField(String simpleClassName) { - newLine(); - sb.append("\tprivate static final Class<").append(simpleClassName).append("> _class_e76G$ = ").append(simpleClassName).append(".class;\n"); + public StringBuilderHelper addDefaultField() { newLine(); sb.append("\tprivate String _alias_q2Gv$;\n"); newLine(); @@ -251,7 +249,7 @@ public class EntityProcessor extends AbstractProcessor { public StringBuilderHelper addMethod(TableInfo tableInfo) { sb.append("\t@Override\n" + "\tpublic Class<").append(tableInfo.getSimpleClassName()).append("> getColumnClass() {\n") - .append("\t\treturn this._class_e76G$;\n") + .append("\t\treturn ").append(tableInfo.getSimpleClassName()).append(".class;\n") .append("\t}\n"); newLine(); sb.append("\t@Override\n" + diff --git a/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/matedata/Conf.java b/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/matedata/Conf.java index da5adee..274ffaa 100644 --- a/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/matedata/Conf.java +++ b/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/matedata/Conf.java @@ -18,19 +18,19 @@ import java.util.function.Function; public class Conf { private String className = "%sCol"; - private String packageName = "%s.apt"; + private String classPackage = "%s.apt"; private boolean genTables = true; - private String tablasPackageName = "%s.tables"; - private String tablesName = "%S"; + private String tablasClassPackage = "%s.tables"; + private String tablesClassName = "%S"; private boolean initFlag = false; private Conf(Conf conf) { this.className = conf.className; - this.packageName = conf.packageName; + this.classPackage = conf.classPackage; this.genTables = conf.genTables; - this.tablasPackageName = conf.tablasPackageName; - this.tablesName = conf.tablesName; + this.tablasClassPackage = conf.tablasClassPackage; + this.tablesClassName = conf.tablesClassName; this.initFlag = conf.initFlag; } @@ -69,10 +69,10 @@ public class Conf { Properties properties = new Properties(); properties.load(Files.newInputStream(confFile.toPath())); this.className = properties.getOrDefault("className", this.className).toString(); - this.packageName = properties.getOrDefault("packageName", this.packageName).toString(); + this.classPackage = properties.getOrDefault("classPackage", this.classPackage).toString(); this.genTables = Boolean.parseBoolean(properties.getOrDefault("genTables", Boolean.toString(this.genTables)).toString()); - this.tablasPackageName = properties.getOrDefault("tablasPackageName", this.tablasPackageName).toString(); - this.tablesName = properties.getOrDefault("tablesName", this.tablesName).toString(); + this.tablasClassPackage = properties.getOrDefault("tablasClassPackage", this.tablasClassPackage).toString(); + this.tablesClassName = properties.getOrDefault("tablesClassName", this.tablesClassName).toString(); } public static Conf getConf(Conf globalConf, Table table, Collection keys) { @@ -92,12 +92,12 @@ public class Conf { this.className = className; } - public String getPackageName() { - return packageName; + public String getClassPackage() { + return classPackage; } - public void setPackageName(String packageName) { - this.packageName = packageName; + public void setClassPackage(String classPackage) { + this.classPackage = classPackage; } public boolean isGenTables() { @@ -108,28 +108,28 @@ public class Conf { this.genTables = genTables; } - public String getTablasPackageName() { - return tablasPackageName; + public String getTablasClassPackage() { + return tablasClassPackage; } - public void setTablasPackageName(String tablasPackageName) { - this.tablasPackageName = tablasPackageName; + public void setTablasClassPackage(String tablasClassPackage) { + this.tablasClassPackage = tablasClassPackage; } - public String getTablesName() { - return tablesName; + public String getTablesClassName() { + return tablesClassName; } - public void setTablesName(String tablesName) { - this.tablesName = tablesName; + public void setTablesClassName(String tablesClassName) { + this.tablesClassName = tablesClassName; } public enum ConfItem { className("value", Table::value, (c, v) -> c.setClassName(v.toString())), - packageName("packageName", Table::packageName, (c, v) -> c.setPackageName(v.toString())), + packageName("classPackage", Table::classPackage, (c, v) -> c.setClassPackage(v.toString())), genTables("genTables", Table::genTables, (c, v) -> c.setGenTables((boolean) v)), - tablasPackageName("tablasPackageName", Table::tablesPackageName, (c, v) -> c.setTablasPackageName(v.toString())), - tablesName("tablesName", Table::tablesName, (c, v) -> c.setTablesName(v.toString())); + tablasPackageName("tablesClassPackage", Table::tablesClassPackage, (c, v) -> c.setTablasClassPackage(v.toString())), + tablesName("tablesClassName", Table::tablesClassName, (c, v) -> c.setTablesClassName(v.toString())); private final String action; @@ -153,10 +153,11 @@ public class Conf { public String toString() { return "Conf{" + "className='" + className + '\'' + - ", packageName='" + packageName + '\'' + + ", classPackage='" + classPackage + '\'' + ", genTables=" + genTables + - ", tablasPackageName='" + tablasPackageName + '\'' + - ", tablesName='" + tablesName + '\'' + + ", tablasClassPackage='" + tablasClassPackage + '\'' + + ", tablesClassName='" + tablesClassName + '\'' + + ", initFlag=" + initFlag + '}'; } } diff --git a/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/matedata/TableInfo.java b/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/matedata/TableInfo.java index 1232879..abcd636 100644 --- a/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/matedata/TableInfo.java +++ b/plugin/mybatis-plus-join-processor/src/main/java/com/github/yulichang/processor/matedata/TableInfo.java @@ -54,9 +54,9 @@ public class TableInfo { /** * 生成类的路径 */ - public String getTagPackage() { + public String getTagClassPackage() { if (tagPackageName == null) { - tagPackageName = parse(conf.getPackageName(), this.classPackage); + tagPackageName = parse(conf.getClassPackage(), this.classPackage); } return tagPackageName; } @@ -66,7 +66,7 @@ public class TableInfo { */ public String getTagTablesName() { if (tagTablesName == null) { - tagTablesName = parse(conf.getTablesName(), this.simpleClassName); + tagTablesName = parse(conf.getTablesClassName(), this.simpleClassName); } return tagTablesName; } @@ -76,7 +76,7 @@ public class TableInfo { */ public String getTagTablesPackageName() { if (tagTablesPackageName == null) { - tagTablesPackageName = parse(conf.getTablasPackageName(), this.classPackage); + tagTablesPackageName = parse(conf.getTablasClassPackage(), this.classPackage); } return tagTablesPackageName; }