[英]avoid repetitive code Java
我正在ETL Java項目上工作,它提取了3件事-從表中讀取數據將數據轉換為JSON加載數據效果很好。 問題是我正在為每個表這樣做。 我現在的方式是
class ETLHelper
{
private Person read(ResultSet results){
Person p = new Person();
p.setPersonId(results.getString("PERSON_ID"));
p.setPersonName(results.getString("PERSON_NAME"));
return p;
}
private String transform(Person p){
TransformPerson t = new TransformPerson();
t.setTransformPersonId(p.getPersonId);
t.setTransformPersonName(p.getPersonName);
PersonEData eData = new PersonEData();
eData.setDate1(p.date1);
eData.setDate2(p.date2);
t.seteData(eData);
PersonDetails pd = new PersonDetails();
pd.settransformdata(t);
return writeValueAsString(pd);
}
public void etl(){
Connection c = null;
PreparedStatement p = null;
ResultSet r = null;
c = getConnection();
p = c.prepareStatement(getSql());
r = p.executeQuery();
while(r.next()){
messages.add(transform(read(r)));
/*code for loading data*/
}
}
}
人Java
@JsonTypeName(value = "PERSON")
@JsonTypeInfo(include = JsonTypeInfo.As.WRAPPER_OBJECT, use = JsonTypeInfo.Id.NAME)
public class Person{
@JsonProperty(value = "PERSON_ID")
private String personId;
//getter and setter for personId
@JsonProperty(value = "PERSON_NAME")
private String personName;
//getter and setter for personName
}
TransformPerson.java:
@JsonRootName(value = "Person")
class TransformPerson{
private String transformPersonName;
private String transformPersonId;
/*getter and setter for transformPersonName and tranformPersonId*/
@override
String toString(){
return "Person [name =" + transformPersonName + ", id = " + transformPeronId "]";
}
}
PersonEdata:
private String date1;
private String date2;
/*getter and setter*/
@override
public String toString(){
return "PersonEdata [date1=" + date1 +", date2=" + date2 + "]";
}
因此,為每個表編寫了Person類,轉換所需的類和etl類。 還有一些其他類,例如PersonEdata,當調用toString()時返回JSON。 無論如何,我可以更改此設計以避免為每個表編寫類似的代碼嗎? 有一些限制。 每個表都是不同的,並且它們需要轉換類,因為還有其他程序使用生成的JSON,因此我們需要生成那些程序需要理解的JSON。
在當前解決方案中,您已經創建了:
人員類-保存從數據庫檢索的數據
PersonTransform類-將數據從Person復制到其他表示形式,並通過覆蓋toString()
擴展了創建JSON的功能
為簡單起見,您可以執行以下操作:
每個實體(表)都有一個像Person這樣的類-這是JSON可序列化的。
不要重寫toString
方法來表示JSON表示-請改用JSON序列化器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.