類似像 MySql 的主附表應用,主表如下,@DatabaseTable是用在若要另外建立表名,則必須要設定這個值,若沒設定預設會用 class 的名字建立。 @DatabaseField則是欄位名稱。
packagecom.data;importcom.j256.ormlite.field.DatabaseField;importcom.j256.ormlite.table.DatabaseTable;/*** Created by Alan on 2013/9/18.*/@DatabaseTable(tableName="Major")publicclassMajor { @DatabaseFieldprivateString parent;publicvoidsetParent(String parent) {this.parent= parent; }publicStringgetParent() {returnthis.parent; }}
建立 Minor
當 Minor 與 Major 是繼承關係時,同時又必須要包含另外的物件。這邊的@DatabaseField在參數中有foreign代表著這個屬性是外部鍵,指向另外一個物件的主鍵。並且foreignAutoRefresh是新增一筆資料後不用另外 refresh。
packagecom.data;importcom.j256.ormlite.field.DatabaseField;importcom.j256.ormlite.table.DatabaseTable;/*** Created by Alan on 2013/9/18.*/@DatabaseTable(tableName ="Minor")publicclassMinorextendsMajor { @DatabaseField(foreign=true, foreignAutoRefresh=true)privateOther other;publicMinor() { } @DatabaseFieldprivateString child;publicvoidsetChild(String child) {this.child= child; }publicStringgetChild() {returnthis.child; } /** * 設定外部物件 */publicvoidsetOther(Other other) {this.other= other; } /** * 取得外部物件 */publicOthergetOther() {returnthis.other; }}
建立外部物件
外部物件若要和別的物件有 Composition 的關係,在這邊必須要有主鍵,而我設定generatedId=true就類似 MySql 的auto_increment屬性,讓物件可以自動生成 ID,以便和別的物件建立指向關係。
packagecom.data;importcom.j256.ormlite.field.DatabaseField;importcom.j256.ormlite.table.DatabaseTable;/*** Created by Alan on 2013/9/18.*/@DatabaseTable(tableName="Other")publicclassOther { @DatabaseField(generatedId=true)privateLong id; @DatabaseFieldprivateString name;publicOther() {}publicvoidsetId(Long id) {this.id= id; }publicLonggetId() {returnthis.id; }publicvoidsetName(String name) {this.name= name; }publicStringgetName() {returnthis.name; }}
Usage
當這些關係建立後。可以用下列方法取得主物件的屬性
Minor minor =newMinor();minor.getParent();
也可以用下列方法取得外部物件的屬性。
Minor minor =newMinor();minor.getOther().getName();