2016-08-03 45 views
2

在android中使用Sqlite作爲數據庫時,我們中的許多人創建了一個類似DbConstants的類,我們將所有表名稱,列名稱保存爲常量。用於維護字段名稱單獨常量的替代

在Realm DB的情況下,我們準備POJO類,它們分別以表格和字段表示爲列名。

有沒有什麼辦法雖然我可以避免在這裏創建另一個常量文件?

使用案例:

POJO表示用戶表:

public class User extends RealmObject { 

private String   name; 
private int    age; 

@Ignore 
private int    sessionId; 

// Standard getters & setters generated by your IDE… 
public String getName() { return name; } 
public void setName(String name) { this.name = name; } 
public int getAge() { return age; } 
public void setAge(int age) { this.age = age; } 
public int getSessionId() { return sessionId; } 
public void setSessionId(int sessionId) { this.sessionId = sessionId;  
} 
} 

所以當我們查詢用戶表如下:

RealmResults<User> result = realm.where(User.class) 
           .equalTo("name", "John") 
           .or() 
           .equalTo("name", "Peter") 
           .findAll(); 

我我想知道我用像文字「名字「在這裏。那麼其他優雅的解決方案還是最佳實踐?

+1

你制定者/ getters表明你不熟悉Lombok:https://projectlombok.org/features/GetterSetter.html –

+0

@MarcinOrlowski POJO直接來自Realm docs :)。雖然我的沒有什麼不同。感謝有趣的鏈接! – binaryKarmic

回答

3

通常的做法是在你的模型類這樣的靜態最終常數:

public class User extends RealmObject { 
    public static final String NAME = "name"; 
    public static final String AGE = "age"; 

    // Fields, constructors, getters, setters, 
} 

realm.where(Person.class).equalTo(Person.NAME, "John").findAll(); 

如果你想這樣做的一個自動化的方式,你可以看看:https://github.com/cmelchior/realmfieldnameshelper

+0

我真的想使用這個輔助工具,但它說它適用於Realm 1.2.0-SNAPSHOT。 – binaryKarmic

+0

是的,這是正確的。目前它只適用於我們的SNAPSHOT版本。我們今天可能會發布Realm 1.1.1。它也將與此一起工作。 –

+0

手指交叉! – binaryKarmic