如何在java反射中隐藏子模型类属性名称
我有一个非常大的模型类,我想为这个模型创建一个toString方法。但是这个模型中有很多字段,所以我尝试使用一个公共模型和Java反射。但是输出是include子模型字段名,是否可以删除该字段 我有1个抽象模型类,如下所示:如何在java反射中隐藏子模型类属性名称,java,reflection,Java,Reflection,我有一个非常大的模型类,我想为这个模型创建一个toString方法。但是这个模型中有很多字段,所以我尝试使用一个公共模型和Java反射。但是输出是include子模型字段名,是否可以删除该字段 我有1个抽象模型类,如下所示: import java.lang.reflect.*; public abstract class CommonEntity { public String getInsertString() { StringBuilder sb = new StringB
import java.lang.reflect.*;
public abstract class CommonEntity {
public String getInsertString() {
StringBuilder sb = new StringBuilder();
try {
Field[] fields = this.getClass().getDeclaredFields();
for (Field field : fields) {
field.setAccessible(true);
Object value = field.get(this);
if (value != null) {
sb.append("\"" + value.toString() + "\",");
}
}
} catch (Exception e) {
System.out.println(e);
}
return sb.toString();
}
}
另外两个模型扩展了这个公共模型
测试:
测试2:
@Data
public class test2 extends CommonEntity {
private String name2;
private String last2;
}
和主要类别:
public static void main(String[] args) {
test a = new test();
a.setName("1");
a.setLast("2");
test2 b = new test2();
b.setLast2("3");
b.setName2("4");
a.setTest(b);
System.out.println(a.getInsertString());
}
控制台输出:
"1","2","test2(name2=4, last2=3)",
我的期望:
"1","2","4","3,
可以移除吗
test2(name2
及
在输出中。该部分输出来自由自动生成的
toString
。如果您不希望它出现,请实现您自己的toString
函数
然而,我担心这个实现,结果字符串表示的预期用途是什么?从您的措辞来看,我担心您打算将其用作SQL查询的一部分,这是不明智的。是的,我打算用于SQL查询。我将这个数据模型从一个非常巨大的Json字符串转换而来。对于这种情况,请给我一些建议。我不认为依靠toString创建SQL查询是最好的设计。可能定义一种特定的转换方法?或者更好地使用ORM库,比如Json格式的Or.My raw data。复杂的结构和很多属性,我想插入到平面结构数据库中。我考虑过Hibernate,但如果我使用Hibernate,我必须将结构模型转换为平面模型,这需要花费大量精力和很长的源代码。有没有可能或任何工具来实现这一点?
test2(name2
last2