Android数据库(SQLite)框架(3)——使用LitePal建立表关联

使用LitePal来自动建立表关联不需要关心什么外键、中间表等实现的细节,只需要在对象中声明好它们相互之间的引用关系,LitePal就会自动在数据库表之间建立好相应的关联关系了,下面我们就来尝试一下吧。

首先确定一下一共涉及到了哪些实体类,Person和Comment,这两个类我们在前两篇文章中就已经建好了,然后还需要有Introduction和Category这两个类,新建Introduction类,代码如下所示:

public class Introduction {  

    private int id;  

    private String guide;  

    private String digest;  

    // 自动生成get、set方法  
}  
1
2
3
4
5
6
7
8
9
10
接着新建Category类,代码如下所示:

public class Category {  

    private int id;  

    private String name;  

    // 自动生成get、set方法  
}  
1
2
3
4
5
6
7
8
现在四个类都已经建好了,但目前它们都还是各自独立的,互相之间没有任何联系,那么我们现在就开始用极为简单易懂的方式来给它们建立关联。

表与表之间的关联关系一共有三种类型,一对一、多对一、和多对多。

Person和Introduction是一对一的关系,那就可以在Person类中添加如下引用:

public class Person{  
    ...  
    private Introduction introduction;  

    // 自动生成get、set方法  
}  
1
2
3
4
5
6
就是这么简单,在Person类中可以得到一个对应的Introduction的实例,那么它们之间就是一对一关系了。

接着Comment和Person是多对一的关系,因此Person中应该包含多个Comment,而Comment中应该只有一个Person,所以就可以这样写:

public class Person{  
    ...  
    private Introduction introduction;  

    private List<Comment> commentList;  

    // 自动生成get、set方法  
}  
1
2
3
4
5
6
7
8
先使用一个泛型为Comment的List集合来表示Person中包含多个Comment,然后修改Comment类的代码,如下所示:

public class Comment {  
    ...  
    private Person person;

    // 自动生成get、set方法   
}  
1
2
3
4
5
6
在Comment类中声明了一个Person 的实例,这样就清楚地表示出了Person 中可以包含多个Comment,而Comment中只能有一个Person ,也就是多对一的关系了。

最后Person 和Category是多对多的关系,相信聪明的你一定已经知道该怎么写了。Person 中可以包含多个Category,所以仍然应该使用List集合来表示:

public class Person {  
    ...  
    private Introduction introduction;  

    private List<Comment> commentList;

    private List<Category> categoryList ;

    // 自动生成get、set方法  
}  
1
2
3
4
5
6
7
8
9
10
而Category中也可以包含多个News,因此Category类也应该使用相同的写法,如下所示:

public class Category {  
    ...  
    private List<Person > personList;  

    // 自动生成get、set方法  
}  
1
2
3
4
5
6
这样就清楚地表达出它们之间是多对多的关联了。

关联关系都声明好了之后,我们只需要将所有的实体类都添加到映射列表当中,并将数据库版本号加1就可以了。修改litepal.xml的代码,如下所示:

<?xml version="1.0" encoding="utf-8"?>  
<litepal>  
    <dbname value="demo" ></dbname>  

    <version value="4" ></version>  

    <list>  
        <mapping class="com.example.Person"></mapping>  
        <mapping class="com.example.Comment"></mapping>  
        <mapping class="com.example.Introduction"></mapping>  
        <mapping class="com.example.Category"></mapping>  
    </list>  
</litepal>  

导出数据库,用Sqlite expert工具打开userinf.db数据库后,查看userbean表效果如下:

转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/39207945 

猜你喜欢

转载自blog.csdn.net/renhaijuniryfe/article/details/88994414