前言
之前講到了ObjectBox的增刪改查等知識。但是于一個數(shù)據(jù)庫而言,升級是一個十分重要的點(diǎn)。這節(jié)我們就來講講ObjectBox的升級知識吧。
今天涉及的內(nèi)容:
- ObjectBox新增或刪除表字段
- ObjectBox重命名表字段名稱
- ObjectBox重命名表名
- 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ù)如下: