4

我正在尝试在 Android 项目中使用 ORMLite 进行数据库持久性。从示例中看起来一切都很好。一旦我开始使用它,我发现我并不完全理解它的要求和行为。

假设我有一个名为 Bone 的课程,我想坚持下去。

@DatabaseTable(tableName = "bones")
public class Bone{
// user defined
@DatabaseField(dataType = DataType.STRING)
private String color;
@DatabaseField
private double length;
@DatabaseField
private int quantity;

// db assigned
@DatabaseField(generatedId = true)
private int id;
public Bone(){
}

// constructors
public Bone(String color, int quantity) {
    this(color, quantity, 0);
}
public Bone(String color, int quantity, int id) {
    this.color = color;
    this.quantity = quantity;
    this.id = id;
}

public Bone(Bone old, int id){
    this.color = old.color;
    this.length = old.length;
    this.quantity = old.quantity;
    this.id = id;
}

public String getColor() {
    return color;
}
public double getLength() {
    return length;
}

public int getQuantity() {
    return quantity;
}
public void setLength(double length) {
    this.length = length;
}

public int getId() {
    return id;
}
}
  1. 其字段的getter和setter名称有什么要求?他们的名字有什么区别吗?我可以使用没有 getter 和 setter 的吗?

  2. 除了没有 arg 构造函数,还需要其他构造函数吗?

请帮忙。

4

1 回答 1

6

1)其字段的getter和setter名称有什么要求?他们的名字有什么区别吗?我可以使用没有 getter 和 setter 的吗?

对 getter 和 setter 没有要求。默认情况下, ORMLite使用反射直接构建实体字段。

如果您设置useGetSet = true@DatabaseField 注释的字段,那么您确实需要 get/set 方法。有关格式,请参阅 javadocs。

2)除了没有arg构造函数,还需要其他构造函数吗?

不。您只需要一个可访问的无参数构造函数,以便 ORMLite 在反射工作之前实例化对象。

于 2013-05-27T21:47:36.833 回答