简化代码

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

View File

@ -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<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
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")

View File

@ -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.*;
/**
* 连表测试类
* <p>
@ -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<UserTenantDO> 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<UserTenantDO> lambda = JoinWrappers.apt(ut);
lambda.selectAs(ut.idea, UserTenantDO::getIdea);
List<UserTenantDO> 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<UserDO> 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<UserDO> 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<UserDO> 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<UserDO> 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();
//自连接

View File

@ -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" +

View File

@ -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<String> 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 +
'}';
}
}

View File

@ -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;
}