简化代码

This commit is contained in:
yulichang 2024-07-21 20:38:58 +08:00
parent 2ee265c213
commit ac635a91db
7 changed files with 91 additions and 94 deletions

View File

@ -21,8 +21,9 @@ import java.lang.annotation.Target;
* 支持Ognl语法字段说明<br/> * 支持Ognl语法字段说明<br/>
* Ognl上下文 * Ognl上下文
* <ul> * <ul>
* <li>classInfo {@link com.github.yulichang.apt.OgnlRoot.ClassInfo}</li> * <li>className 类名</li>
* <li>stringHelper {@link com.github.yulichang.apt.OgnlRoot.StringHelper}</li> * <li>classPackage 包名</li>
* <li>util 工具类 stringHelper {@link com.github.yulichang.apt.OgnlRoot.StringHelper}</li>
* </ul> * </ul>
* 指定开头 Ognl# 这不是ognl语法这是MPJ规定的 用于区分 ognl还是String.format * 指定开头 Ognl# 这不是ognl语法这是MPJ规定的 用于区分 ognl还是String.format
* <p> * <p>
@ -55,7 +56,7 @@ public @interface Table {
* <p> * <p>
* 支持Ognl 默认使用String.format() * 支持Ognl 默认使用String.format()
*/ */
String packageName() default "%s.apt"; String classPackage() default "%s.apt";
/** /**
* 是否在Tables中生成对应的类字段 * 是否在Tables中生成对应的类字段
@ -67,13 +68,13 @@ public @interface Table {
* <p> * <p>
* 支持Ognl 默认使用String.format() * 支持Ognl 默认使用String.format()
*/ */
String tablesPackageName() default "%s.tables"; String tablesClassPackage() default "%s.tables";
/** /**
* Tables中的字段名 默认大写的类名 * Tables中的字段名 默认大写的类名
* <p> * <p>
* 支持Ognl 默认使用String.format() * 支持Ognl 默认使用String.format()
*/ */
String tablesName() default "%S"; String tablesClassName() default "%S";
} }

View File

@ -1,20 +1,31 @@
package com.github.yulichang.apt; package com.github.yulichang.apt;
import lombok.AllArgsConstructor; import lombok.Getter;
import lombok.Data;
import java.io.Serializable; import java.io.Serializable;
import java.util.function.Supplier; import java.util.function.Supplier;
@Data /**
@AllArgsConstructor * @author yulichang
* @since 1.5.0
*/
@Getter
public class Column implements Serializable { 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<String> alias; public Class<?> getClazz() {
return root.getColumnClass();
}
public Supplier<String> getAlias() {
return root::getAlias;
}
} }

View File

@ -13,31 +13,15 @@ import java.util.Objects;
@Getter @Getter
public class OgnlRoot { 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) { private final StringHelper util = new StringHelper();
this.classInfo = new ClassInfo(className, packageName);
this.stringHelper = new StringHelper();
}
@Getter public OgnlRoot(String className, String classPackage) {
public static class ClassInfo { this.className = className;
/** this.classPackage = classPackage;
* 类名
*/
public final String className;
/**
* 包名
*/
public final String packageName;
public ClassInfo(String className, String packageName) {
this.className = className;
this.packageName = packageName;
}
} }
@SuppressWarnings("unused") @SuppressWarnings("unused")

View File

@ -29,6 +29,8 @@ import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Objects; import java.util.Objects;
import static com.github.yulichang.test.join.entity.tables.Tables.*;
/** /**
* 连表测试类 * 连表测试类
* <p> * <p>
@ -64,7 +66,7 @@ class AptWrapperTest {
void testSelectSort() { void testSelectSort() {
ThreadLocalUtils.set("SELECT t.id, t.user_id, t.tenant_id FROM user_tenant t WHERE t.tenant_id = 1"); 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<UserTenantDO> lambda = JoinWrappers.apt(ut) AptQueryWrapper<UserTenantDO> lambda = JoinWrappers.apt(ut)
.selectAsClass(ut, UserTenantDTO.class); .selectAsClass(ut, UserTenantDTO.class);
@ -81,7 +83,7 @@ class AptWrapperTest {
@Test @Test
void testSimple() { void testSimple() {
UserTenantDOCol ut = new UserTenantDOCol(); UserTenantDOCol ut = USERTENANTDO;
AptQueryWrapper<UserTenantDO> lambda = JoinWrappers.apt(ut); AptQueryWrapper<UserTenantDO> lambda = JoinWrappers.apt(ut);
lambda.selectAs(ut.idea, UserTenantDO::getIdea); lambda.selectAs(ut.idea, UserTenantDO::getIdea);
List<UserTenantDO> list = userTenantMapper.selectList(lambda); List<UserTenantDO> list = userTenantMapper.selectList(lambda);
@ -124,9 +126,9 @@ class AptWrapperTest {
" AND (t.id <= ?)\n" + " AND (t.id <= ?)\n" +
"ORDER BY t.id DESC"); "ORDER BY t.id DESC");
UserDOCol u = new UserDOCol(); UserDOCol u = USERDO;
AddressDOCol addr = new AddressDOCol(); AddressDOCol addr = ADDRESSDO;
AreaDOCol ar = new AreaDOCol(); AreaDOCol ar = AREADO;
AptQueryWrapper<UserDO> wrapper = new AptQueryWrapper<>(u) AptQueryWrapper<UserDO> wrapper = new AptQueryWrapper<>(u)
.selectAll() .selectAll()
@ -170,9 +172,9 @@ class AptWrapperTest {
" AND (t.id <= ?)\n" + " AND (t.id <= ?)\n" +
"ORDER BY t.id DESC"); "ORDER BY t.id DESC");
UserDOCol u = new UserDOCol(); UserDOCol u = USERDO;
AddressDOCol addr = new AddressDOCol(); AddressDOCol addr = ADDRESSDO;
AreaDOCol ar = new AreaDOCol(); AreaDOCol ar = AREADO;
AptQueryWrapper<UserDO> wrapper = new AptQueryWrapper<>(u) AptQueryWrapper<UserDO> wrapper = new AptQueryWrapper<>(u)
.selectAll() .selectAll()
@ -222,9 +224,9 @@ class AptWrapperTest {
" AND t2.del = false\n" + " AND t2.del = false\n" +
"ORDER BY t.id DESC"); "ORDER BY t.id DESC");
UserDOCol u = new UserDOCol(); UserDOCol u = USERDO;
AddressDOCol addr = new AddressDOCol(); AddressDOCol addr = ADDRESSDO;
AreaDOCol ar = new AreaDOCol(); AreaDOCol ar = AREADO;
AptQueryWrapper<UserDO> wrapper = new AptQueryWrapper<>(u) AptQueryWrapper<UserDO> wrapper = new AptQueryWrapper<>(u)
.selectAll() .selectAll()
@ -252,9 +254,9 @@ class AptWrapperTest {
" AND t1.del = false\n" + " AND t1.del = false\n" +
" AND t2.del = false"); " AND t2.del = false");
UserDOCol u = new UserDOCol(); UserDOCol u = USERDO;
AddressDOCol addr = new AddressDOCol(); AddressDOCol addr = ADDRESSDO;
AreaDOCol ar = new AreaDOCol(); AreaDOCol ar = AREADO;
//基本数据类型 String //基本数据类型 String
AptQueryWrapper<UserDO> wrapper = new AptQueryWrapper<>(u) AptQueryWrapper<UserDO> wrapper = new AptQueryWrapper<>(u)
@ -306,9 +308,9 @@ class AptWrapperTest {
" AND (t.id <= ?)\n" + " AND (t.id <= ?)\n" +
"ORDER BY t.id ASC, t.`name` ASC"); "ORDER BY t.id ASC, t.`name` ASC");
UserDOCol u = new UserDOCol(); UserDOCol u = USERDO;
AddressDOCol addr = new AddressDOCol(); AddressDOCol addr = ADDRESSDO;
AreaDOCol ar = new AreaDOCol(); AreaDOCol ar = AREADO;
UserDO userDO = new UserDO(); UserDO userDO = new UserDO();
userDO.setId(1); userDO.setId(1);
@ -438,7 +440,7 @@ class AptWrapperTest {
"WHERE t.del = false\n" + "WHERE t.del = false\n" +
" AND (t.id > ?)"); " AND (t.id > ?)");
UserDOCol u = new UserDOCol(); UserDOCol u = USERDO;
UserDOCol ua = new UserDOCol(); UserDOCol ua = new UserDOCol();
//自连接 //自连接

View File

@ -115,7 +115,7 @@ public class EntityProcessor extends AbstractProcessor {
tableInfo.setFields(fieldInfos); tableInfo.setFields(fieldInfos);
StringBuilderHelper content = new StringBuilderHelper() StringBuilderHelper content = new StringBuilderHelper()
.addPackage(tableInfo.getTagPackage()) .addPackage(tableInfo.getTagClassPackage())
.newLine() .newLine()
.addImport(BaseColumn.class.getName()) .addImport(BaseColumn.class.getName())
.addImport(Column.class.getName()) .addImport(Column.class.getName())
@ -124,12 +124,12 @@ public class EntityProcessor extends AbstractProcessor {
.addClass(tableInfo.getClassComment(), tableInfo.getTagClassName(), .addClass(tableInfo.getClassComment(), tableInfo.getTagClassName(),
BaseColumn.class.getSimpleName() + "<" + tableInfo.getSimpleClassName() + ">", BaseColumn.class.getSimpleName() + "<" + tableInfo.getSimpleClassName() + ">",
c -> c c -> c
.addDefaultField(tableInfo.getSimpleClassName()) .addDefaultField()
.addConstructor(tableInfo) .addConstructor(tableInfo)
.addFields(tableInfo) .addFields(tableInfo)
.addMethod(tableInfo) .addMethod(tableInfo)
); );
writerFile(tableInfo.getTagPackage() + "." + tableInfo.getTagClassName(), content.getContent()); writerFile(tableInfo.getTagClassPackage() + "." + tableInfo.getTagClassName(), content.getContent());
return tableInfo; return tableInfo;
} }
@ -142,7 +142,7 @@ public class EntityProcessor extends AbstractProcessor {
content.addPackage(tagPackage); content.addPackage(tagPackage);
content.newLine(); content.newLine();
// import // import
tableInfos.forEach(tableInfo -> content.addImport(tableInfo.getTagPackage() + "." + tableInfo.getTagClassName())); tableInfos.forEach(tableInfo -> content.addImport(tableInfo.getTagClassPackage() + "." + tableInfo.getTagClassName()));
content.newLine(); content.newLine();
// class // class
String tables = "Tables"; String tables = "Tables";
@ -220,8 +220,8 @@ public class EntityProcessor extends AbstractProcessor {
public StringBuilderHelper addFields(TableInfo tableInfo) { public StringBuilderHelper addFields(TableInfo tableInfo) {
tableInfo.getFields().forEach(fieldInfo -> { tableInfo.getFields().forEach(fieldInfo -> {
addComment("\t", fieldInfo.getComment()); addComment("\t", fieldInfo.getComment());
sb.append(String.format("\tpublic final Column %s = new Column(this, %s.class, \"%s\", () -> this._alias_q2Gv$);\n", sb.append(String.format("\tpublic final Column %s = new Column(this, \"%s\");\n",
fieldInfo.getProperty(), tableInfo.getSimpleClassName(), fieldInfo.getProperty())); fieldInfo.getProperty(), fieldInfo.getProperty()));
newLine(); newLine();
}); });
return this; return this;
@ -239,9 +239,7 @@ public class EntityProcessor extends AbstractProcessor {
return this; return this;
} }
public StringBuilderHelper addDefaultField(String simpleClassName) { public StringBuilderHelper addDefaultField() {
newLine();
sb.append("\tprivate static final Class<").append(simpleClassName).append("> _class_e76G$ = ").append(simpleClassName).append(".class;\n");
newLine(); newLine();
sb.append("\tprivate String _alias_q2Gv$;\n"); sb.append("\tprivate String _alias_q2Gv$;\n");
newLine(); newLine();
@ -251,7 +249,7 @@ public class EntityProcessor extends AbstractProcessor {
public StringBuilderHelper addMethod(TableInfo tableInfo) { public StringBuilderHelper addMethod(TableInfo tableInfo) {
sb.append("\t@Override\n" + sb.append("\t@Override\n" +
"\tpublic Class<").append(tableInfo.getSimpleClassName()).append("> getColumnClass() {\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"); .append("\t}\n");
newLine(); newLine();
sb.append("\t@Override\n" + sb.append("\t@Override\n" +

View File

@ -18,19 +18,19 @@ import java.util.function.Function;
public class Conf { public class Conf {
private String className = "%sCol"; private String className = "%sCol";
private String packageName = "%s.apt"; private String classPackage = "%s.apt";
private boolean genTables = true; private boolean genTables = true;
private String tablasPackageName = "%s.tables"; private String tablasClassPackage = "%s.tables";
private String tablesName = "%S"; private String tablesClassName = "%S";
private boolean initFlag = false; private boolean initFlag = false;
private Conf(Conf conf) { private Conf(Conf conf) {
this.className = conf.className; this.className = conf.className;
this.packageName = conf.packageName; this.classPackage = conf.classPackage;
this.genTables = conf.genTables; this.genTables = conf.genTables;
this.tablasPackageName = conf.tablasPackageName; this.tablasClassPackage = conf.tablasClassPackage;
this.tablesName = conf.tablesName; this.tablesClassName = conf.tablesClassName;
this.initFlag = conf.initFlag; this.initFlag = conf.initFlag;
} }
@ -69,10 +69,10 @@ public class Conf {
Properties properties = new Properties(); Properties properties = new Properties();
properties.load(Files.newInputStream(confFile.toPath())); properties.load(Files.newInputStream(confFile.toPath()));
this.className = properties.getOrDefault("className", this.className).toString(); 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.genTables = Boolean.parseBoolean(properties.getOrDefault("genTables", Boolean.toString(this.genTables)).toString());
this.tablasPackageName = properties.getOrDefault("tablasPackageName", this.tablasPackageName).toString(); this.tablasClassPackage = properties.getOrDefault("tablasClassPackage", this.tablasClassPackage).toString();
this.tablesName = properties.getOrDefault("tablesName", this.tablesName).toString(); this.tablesClassName = properties.getOrDefault("tablesClassName", this.tablesClassName).toString();
} }
public static Conf getConf(Conf globalConf, Table table, Collection<String> keys) { public static Conf getConf(Conf globalConf, Table table, Collection<String> keys) {
@ -92,12 +92,12 @@ public class Conf {
this.className = className; this.className = className;
} }
public String getPackageName() { public String getClassPackage() {
return packageName; return classPackage;
} }
public void setPackageName(String packageName) { public void setClassPackage(String classPackage) {
this.packageName = packageName; this.classPackage = classPackage;
} }
public boolean isGenTables() { public boolean isGenTables() {
@ -108,28 +108,28 @@ public class Conf {
this.genTables = genTables; this.genTables = genTables;
} }
public String getTablasPackageName() { public String getTablasClassPackage() {
return tablasPackageName; return tablasClassPackage;
} }
public void setTablasPackageName(String tablasPackageName) { public void setTablasClassPackage(String tablasClassPackage) {
this.tablasPackageName = tablasPackageName; this.tablasClassPackage = tablasClassPackage;
} }
public String getTablesName() { public String getTablesClassName() {
return tablesName; return tablesClassName;
} }
public void setTablesName(String tablesName) { public void setTablesClassName(String tablesClassName) {
this.tablesName = tablesName; this.tablesClassName = tablesClassName;
} }
public enum ConfItem { public enum ConfItem {
className("value", Table::value, (c, v) -> c.setClassName(v.toString())), 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)), genTables("genTables", Table::genTables, (c, v) -> c.setGenTables((boolean) v)),
tablasPackageName("tablasPackageName", Table::tablesPackageName, (c, v) -> c.setTablasPackageName(v.toString())), tablasPackageName("tablesClassPackage", Table::tablesClassPackage, (c, v) -> c.setTablasClassPackage(v.toString())),
tablesName("tablesName", Table::tablesName, (c, v) -> c.setTablesName(v.toString())); tablesName("tablesClassName", Table::tablesClassName, (c, v) -> c.setTablesClassName(v.toString()));
private final String action; private final String action;
@ -153,10 +153,11 @@ public class Conf {
public String toString() { public String toString() {
return "Conf{" + return "Conf{" +
"className='" + className + '\'' + "className='" + className + '\'' +
", packageName='" + packageName + '\'' + ", classPackage='" + classPackage + '\'' +
", genTables=" + genTables + ", genTables=" + genTables +
", tablasPackageName='" + tablasPackageName + '\'' + ", tablasClassPackage='" + tablasClassPackage + '\'' +
", tablesName='" + tablesName + '\'' + ", tablesClassName='" + tablesClassName + '\'' +
", initFlag=" + initFlag +
'}'; '}';
} }
} }

View File

@ -54,9 +54,9 @@ public class TableInfo {
/** /**
* 生成类的路径 * 生成类的路径
*/ */
public String getTagPackage() { public String getTagClassPackage() {
if (tagPackageName == null) { if (tagPackageName == null) {
tagPackageName = parse(conf.getPackageName(), this.classPackage); tagPackageName = parse(conf.getClassPackage(), this.classPackage);
} }
return tagPackageName; return tagPackageName;
} }
@ -66,7 +66,7 @@ public class TableInfo {
*/ */
public String getTagTablesName() { public String getTagTablesName() {
if (tagTablesName == null) { if (tagTablesName == null) {
tagTablesName = parse(conf.getTablesName(), this.simpleClassName); tagTablesName = parse(conf.getTablesClassName(), this.simpleClassName);
} }
return tagTablesName; return tagTablesName;
} }
@ -76,7 +76,7 @@ public class TableInfo {
*/ */
public String getTagTablesPackageName() { public String getTagTablesPackageName() {
if (tagTablesPackageName == null) { if (tagTablesPackageName == null) {
tagTablesPackageName = parse(conf.getTablasPackageName(), this.classPackage); tagTablesPackageName = parse(conf.getTablasClassPackage(), this.classPackage);
} }
return tagTablesPackageName; return tagTablesPackageName;
} }