2012-11-27 25 views
4

我看到,由於性能問題,greenDao更喜歡不使用註釋來生成DAO和TO。然而,如果我仍然需要爲解析器目的註釋一個TO,那該怎麼辦呢?有什麼辦法可以實現嗎?註釋greenDao生成的對象

例子:

如果我們創建GreenDAO代碼生成一個Customer實體,它會創建CustomerDAO和客戶分類,對不對?因此,如果我使用返回一個Customer對象的SOAP webservices,並且爲了便於解析這個Customer對象,我會使用類似simpleXML這樣的註釋框架。使用GreenDAO重新生成代碼時,是否有任何方法可以在不改變每個註釋的情況下更改Customer類?

謝謝!

回答

5

您可以嘗試在Path中使用我們的叉子,它增加了對註釋的支持。 (它也增加了對枚舉和序列化的支持) https://github.com/path/greenDAO 它是在我的盤子發送一個拉請求,但不知道我什麼時候有空。

順便說一句,我們的版本並沒有很好地作爲greenDAO進行單元測試,但我們一直在生產中使用它,所以應該足夠穩定。

添加註釋,您可以檢查此示例代碼: https://github.com/path/greenDAO/blob/master/DaoExampleGenerator/src/de/greenrobot/daogenerator/gentest/ExampleDaoGenerator.java#L42

順便說一句,我們的叉爲每個實體對象創建兩班。一個EntityBase這是抽象的,包括所有領域等,Entity其中EntityBase延伸。您應該只編輯Entity

+0

這種方式不錯,但我不明白每個實體的使用這兩類。具體類除了構造函數外沒有其他任何東西。感謝:) – user1855284

+0

它讓我們重寫setter和getters,並且還使我們的自定義代碼遠離生成的代碼(構造函數除外)。僅供參考,我們從不觸及BaseEntity類,因爲它們位於遠離其他源代碼的src-gen文件夾中。 – yigit

9

您可以greendao 2.0添加註釋這樣

entity.addStringProperty("title").codeBeforeField("@com.google.gson.annotations.SerializedName(\"title\")"); 
+3

或'entity.addImport(「com.google.gson.annotations.SerializedName」); entity.addLongProperty(「mobile」)。codeBeforeField(「@ SerializedName(\」mobile \「)」);':) –