ObjectBox(七)——數(shù)據(jù)庫的升級

前言

之前講到了ObjectBox的增刪改查等知識。但是于一個數(shù)據(jù)庫而言,升級是一個十分重要的點(diǎn)。這節(jié)我們就來講講ObjectBox的升級知識吧。

今天涉及的內(nèi)容:

  1. ObjectBox新增或刪除表字段
  2. ObjectBox重命名表字段名稱
  3. ObjectBox重命名表名
  4. ObjectBox更改表字段屬性

一.ObjectBox新增或刪除表字段

當(dāng)我們數(shù)據(jù)庫的升級需要新增和刪除字段時,直接操作實(shí)體類即可,不需要做特殊的更改.

1.1 數(shù)據(jù)表新增字段

先來看看我建的User表數(shù)據(jù)實(shí)體類:

/**
 * Title:objectBox數(shù)據(jù)庫數(shù)據(jù)實(shí)體
 * description:
 * autor:pei
 * created on 2019/12/2
 */
@Entity
public class User {

    //必須寫一個public的id(id為long數(shù)據(jù)類型)并寫上"@Id"注解
    //若id不為public。那你至少要提供public 的 set,get方法
    @Id
    private long id;

    private String name;
    private int age;

    public long getId() {
        return id;
    }

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

    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;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }

}

在程序運(yùn)行的時候,我添加了些數(shù)據(jù),然后運(yùn)行結(jié)果是:


image.png

ok,現(xiàn)在讓我們在User表中加一個int類型的 sex 屬性。記?。褐苯釉赨ser實(shí)體類中添加完,然后運(yùn)行程序就行。添加后的User實(shí)體如下(記得要set,get):

/**
 * Title:objectBox數(shù)據(jù)庫數(shù)據(jù)實(shí)體
 * description:
 * autor:pei
 * created on 2019/12/2
 */
@Entity
public class User {

    //必須寫一個public的id(id為long數(shù)據(jù)類型)并寫上"@Id"注解
    //若id不為public。那你至少要提供public 的 set,get方法
    @Id
    private long id;

    private String name;
    private int sex;
    private int age;

    public long getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public int getSex() {
        return sex;
    }

    public void setSex(int sex) {
        this.sex = sex;
    }

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", sex=" + sex +
                ", age=" + age +
                '}';
    }
}

然后,運(yùn)行項目,執(zhí)行結(jié)果如下:


image.png

這樣,我們數(shù)據(jù)庫升級的時候,就把sex字段添加進(jìn)去了。需要注意的是,雖然我們新增的sex屬性為int數(shù)據(jù)類型,但是數(shù)據(jù)庫中存的不是0,而是null,所以取值的時候需要注意。

1.2 數(shù)據(jù)表刪除字段

接著1.1中User表的數(shù)據(jù)結(jié)構(gòu)是:

User{
    private String name;
    private int sex;
    private int age;
}

的講,現(xiàn)在我升級數(shù)據(jù)庫,要將User表中的age字段去掉,直接修改User實(shí)體類,則新的User實(shí)體代碼如下:

@Entity
public class User {

    //必須寫一個public的id(id為long數(shù)據(jù)類型)并寫上"@Id"注解
    //若id不為public。那你至少要提供public 的 set,get方法
    @Id
    private long id;

    private String name;
    private int sex;

    public long getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

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

    public int getSex() {
        return sex;
    }

    public void setSex(int sex) {
        this.sex = sex;
    }


    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", sex=" + sex +
                '}';
    }
}

運(yùn)行結(jié)果如下:


image.png

look,這樣我們的數(shù)據(jù)庫就直接升級完成了。

二.ObjectBox重命名表字段名稱

還是以User實(shí)體

/**
 * Title:objectBox數(shù)據(jù)庫數(shù)據(jù)實(shí)體
 * description:
 * autor:pei
 * created on 2019/12/2
 */
@Entity
public class User {
    
    //必須寫一個public的id(id為long數(shù)據(jù)類型)并寫上"@Id"注解
    //若id不為public。那你至少要提供public 的 set,get方法
    @Id
    private long id;

    private String name;
    private int age;

    public long getId() {
        return id;
    }

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

    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;
    }

    @Override
    public String toString() {
        return "User{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

為例吧,此時數(shù)據(jù)庫中的數(shù)據(jù)如下:

還有 59% 的精彩內(nèi)容
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。
支付 ¥3.00 繼續(xù)閱讀

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容