【问题标题】:Alternative for maintaining separate constants for field names为字段名称维护单独常量的替代方法
【发布时间】:2016-08-03 07:58:52
【问题描述】:

在 android 中使用 Sqlite 作为 DB 时,我们中的许多人创建了一个像 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();

我不想在这里使用像“name”这样的字面量。那么还有其他优雅的解决方案或最佳实践吗?

【问题讨论】:

标签: java android realm pojo


【解决方案1】:

通常的做法是在您的模型类中使用静态最终常量,如下所示:

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

【讨论】:

  • 我真的很想用这个辅助工具,但它说它适用于 Realm 1.2.0-SNAPSHOT。
  • 是的,没错。现在它只适用于我们的 SNAPSHOT 版本。我们可能会在今天发布 Realm 1.1.1。它也适用于此。
  • 手指交叉!!
  • Realm Java 1.1.1 已经发布,该库也应该可以使用它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-05-07
  • 2020-10-07
  • 2018-01-21
  • 1970-01-01
  • 1970-01-01
  • 2015-07-19
  • 1970-01-01
相关资源
最近更新 更多