使用 POJO 的簡單 CRUD

Ektorp 的一大優點是,它提供了類似 ORM 的功能,直接開箱即用。這個例子將引導你建立一個簡單的 POJO 並對其進行標準的 CRUD 操作

建立一個簡單的 POJO

首先,我們定義 POJO 如下

import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;

@JsonInclude(JsonInclude.Include.NON_NULL)
public class Person {
    @JsonProperty("_id") private String id;
    @JsonProperty("_rev") private String revision;
    private String name;

    public String getId() {
        return id;
    }

    public String getRevision() {
        return revision;
    }

    public String getName() {
        return name;
    }

    public void setId(String id) {
        this.id = id;
    }

    public void setRevision(String revision) {
        this.revision = revision;
    }

    public void setName(String name) {
        this.name = name;
    }
}

那麼,這裡發生了什麼?註釋 @JsonInclude(JsonInclude.Include.NON_NULL) 告訴 jackson 不要將空欄位序列化為 JSON。因此,例如,如果 id 屬性為 null,則根本不會在生成的 JSON 中具有 id 屬性。

另外,@JsonProperty("_id")@JsonProperty("_rev") 註釋是指令,通知序列化器/反序列化器將這些值對映到的 JSON 屬性。CouchDB 中的文件必須同時具有_id 和_rev 欄位,因此你打算在 CouchDB 中保留的所有 POJO 必須包含如上所述的 id 和 revision 屬性。只要你不更改註釋,你就可以在 POJO 中以不同方式命名你的屬性。例如,

@JsonProperty("_id") private String identity;
@JsonProperty("_rev") private String version;

將新例項持久儲存到 CouchDB

現在,在資料庫中建立一個全新的文件,如下所示,假設你有一個有效的 CouchDbInstance 例項,並且你希望將該文件儲存在名為 person 的資料庫中 **

CouchDbConnector connector = dbInstance.createConnector("person", true);

Person person = new Person();
person.setName("John Doe");
connector.create(person);

現在,在這種情況下,CouchDB 將自動為你建立新的 ID 和修訂版。如果你不想要這個,你可以使用

connector.create("MyID", person);

載入,更新和刪除文件

假設你已準備好 CouchDBConnector 例項,我們可以按如下方式載入 POJO 的例項

Person person = connector.get(Person.class, "id");

然後我們可以操作它,並按如下方式更新它

person.setName("Mr Bean");
connector.update(person);

請注意,如果沙發中文件的修訂版與你要傳送的文件的修訂版不匹配,則更新將失敗,你需要從資料庫載入最新版本並相應地合併你的例項。

最後,如果我們希望刪除例項,它就像它一樣簡單

connector.delete(person);