LitePal一對一、多對一、多對多
阿新 • • 發佈:2019-02-19
一對一
一個boy對應一個girl,相應地一個girl對應一個boy
Boy類:
public class Boy extends DataSupport { private int id; private Girl girl; private String name; private int age; public int getId() { return id; } public void setId(int id) { this.id = id; } public Girl getGirl() { return girl; } public void setGirl(Girl girl) { this.girl = girl; } 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 "Boy{" + "id=" + id + ", girl=" + girl + ", name='" + name + '\'' + ", age=" + age + '}'; } }
Girl類
public class Girl extends DataSupport { private int id; private Boy boy; private int age; private String name; public Boy getBoy() { return boy; } public void setBoy(Boy boy) { this.boy = boy; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getId() { return id; } public void setId(int id) { this.id = id; } @Override public String toString() { return "Girl{" + "id=" + id + ", boy=" + boy + ", age=" + age + ", name='" + name + '\'' + '}'; } }
測試程式碼:
Girl girl = new Girl(); girl.setName("lucy"); girl.setAge(17); girl.save(); Boy boy = new Boy(); boy.setAge(17); boy.setName("jack"); boy.setGirl(girl); boy.save(); Boy b = DataSupport.findLast(Boy.class, true); Log.e("tag", b.toString()); Girl g = DataSupport.findLast(Girl.class, true); Log.e("tag", g.toString()); int id = g.getId(); g.setBoy(b); g.update(id);
測試結果:
E/tag: Boy{id=2, girl=Girl{id=2, boy=null, age=17, name='lucy'}, name='jack', age=17}
E/tag: Girl{id=2, boy=Boy{id=2, girl=null, name='jack', age=17}, age=17, name='lucy'}
可以看到,一個Boy對應一個Girl,一個Girl也對應一個Boy
多對一
一張專輯有多首歌,一首歌對應一張專輯
Song:
public class Song extends DataSupport {
private int id;
private Album album;
private String name;
private int duration;
public Album getAlbum() {
return album;
}
public void setAlbum(Album album) {
this.album = album;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
@Override
public String toString() {
return "Song{" +
"id=" + id +
", album=" + album +
", name='" + name + '\'' +
", duration=" + duration +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getDuration() {
return duration;
}
public void setDuration(int duration) {
this.duration = duration;
}
}
Album:
public class Album extends DataSupport {
private int id;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
private String name;
private int age;
private List<Song> song = new ArrayList<>();
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;
}
public List<Song> getSong() {
return song;
}
public void setSong(List<Song> song) {
this.song = song;
}
@Override
public String toString() {
return "Album{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", song=" + song.toString() +
'}';
}
}
測試程式碼:
Song song1 = new Song();
song1.setName("因為愛情");
song1.setDuration(240);
Song song2 = new Song();
song2.setName("愛情轉移");
song2.setDuration(340);
song1.save();
song2.save();
Album album = new Album();
album.getSong().add(song1);
album.getSong().add(song2);
album.setName("陳奕迅");
album.setAge(10);
album.save();
Album album1 = DataSupport.findLast(Album.class, true);
Song song3 = DataSupport.findLast(Song.class, true);
Log.e("tag", song3.toString());
Log.e("tag", album1.toString());
測試結果:
E/tag: Song{id=2, album=Album{id=1, name='陳奕迅', age=10, song=[]}, name='愛情轉移', duration=340}
E/tag: Album{id=1, name='陳奕迅', age=10, song=[Song{id=1, album=null, name='因為愛情', duration=240}, Song{id=2, album=null, name='愛情轉移', duration=340}]}
可以看到Song對應一個Album,一個Album對應多個Song
多對多
一個老師對應多個學生,一個學生對應多個老師
Teacher類
public class Teacher extends DataSupport {
private int id;
private String name ;
private int age;
private List<Student> student = new ArrayList<>();
public int getId() {
return id;
}
public void setId(int 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;
}
public List<Student> getStudent() {
return student;
}
public void setStudent(List<Student> student) {
this.student = student;
}
@Override
public String toString() {
return "Teacher{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", student=" + student +
'}';
}
}
Student類
public class Student extends DataSupport {
private int id;
private String name;
private int age;
private List<Teacher> teacherList = new ArrayList<>();
public int getId() {
return id;
}
public void setId(int 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;
}
public List<Teacher> getTeacherList() {
return teacherList;
}
public void setTeacherList(List<Teacher> teacherList) {
this.teacherList = teacherList;
}
@Override
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
", teacherList=" + teacherList +
'}';
}
}
測試程式碼:
Student s1 = new Student();
s1.setName("小名");
s1.setAge(12);
s1.save();
Student s2 = new Student();
s2.setName("小紅");
s2.setAge(13);
s2.save();
Teacher t1 = new Teacher();
t1.setAge(45);
t1.setName("張老師");
t1.getStudent().add(s1);
t1.getStudent().add(s2);
t1.save();
Teacher t2 = new Teacher();
t2.setAge(46);
t2.setName("劉老師");
t2.getStudent().add(s1);
t2.getStudent().add(s2);
t2.save();
Student s = DataSupport.findLast(Student.class, true);
Log.e("tag", s.toString());
Teacher t = DataSupport.findLast(Teacher.class, true);
Log.e("tag", t.toString());
測試結果:
E/tag: Student{id=2, name='小紅', age=13, teacherList=[Teacher{id=1, name='張老師', age=45, student=[]}, Teacher{id=2, name='劉老師', age=46, student=[]}]}
E/tag: Teacher{id=2, name='劉老師', age=46, student=[Student{id=1, name='小名', age=12, teacherList=[]}, Student{id=2, name='小紅', age=13, teacherList=[]}]}
可以看到,學生小紅對應多個老師,劉老師對應多個學生