Litepal使用心得之建立数据之间的联系

来源:互联网 发布:landesk软件下载 编辑:程序博客网 时间:2024/05/16 03:19

Litepal使用心得之建立数据之间的联系

去年开始接触到郭神的“儿子”,关于数据库的框架——Litepal。从一个什么都不懂得菜鸟,到用这个框架完成一些想要的功能。为郭神的创造点赞。方便自己之余,将一些用法心得分享给大家,免得大家走弯路。

1.建立表和表之间的关系。

参考郭神的系列教程Android数据库高手秘籍
我们也以New为例,建立对象。来说明表与表之间建立的联系。
以新闻和评论为例,建立表与表的关联。

public class News  extends DataSupport{        private int id;        private List<Comments> comments;    public int getId()     {        return id;    }    public void setId(int id)     {        this.id = id;    }//编译器自动生成的属性函数    public List<Comments> getComments()     {        return comments;    } //编者自己加的的属性函数,在“动态建立表与表的联系中”要用到。与上面函数仅仅是函数名不同 public List<Comments> getCommentsList()     {        return comments;    }    public void setComments(List<Comments> comments)     {        this.comments = comments;    }}

注意,这里,在给News类添加了一个 int id 属性。无须给它赋值,只需要调用news.getId( ) 便可以得到news 在数据库中的id。在AndroidStudio中,按Alt+insert 键,自动生成get和set系列成员函数。这一点很重要!!!不然在后面建立表间联系时,按照郭神的方法,无法建立联系。
OK,继续把Comments类建立好。

public class Comments extends DataSupport{    private int id;    private String content;    public int getId() {        return id;    }    public void setId(int id) {        this.id = id;    }    public String getContent() {        return content;    }    public void setContent(String content) {        this.content = content;    }}

参考郭神系列教程可知,Comments与News两表已经建立了联系。在数据库中,comments表中多了一个news_id属性。

动态添加表与表之间地关联关系

这里新建一个Comments类的实例,并且给这个实例与一个已存在的news绑定(假设数据库中有很多条news,这里从中取出第一条news).
郭神的教程是这样的:

Comments comments=new Comments();comments.setContent("这是一条评论");comments.save();//必须存入数据库中,才可以和news表建立联系News news=DataSupport.findFirst(News.class);//从数据库中取出第一条数据。news.getComments().add(comments);//建立comments与news的联系news.save();//保存

通过实践可以保证,comments与news确实建立了联系。在comments的键值news_id中的值为刚才那条news的id。

但是!如果改成下面的代码。则无法建立关联。

Comments comments=new Comments();comments.setContent("这是一条评论");comments.save();//必须存入数据库中,才可以和news表建立联系News news=DataSupport.findFirst(News.class);//从数据库中取出第一条数据。//这里用自定义的属性函数getCommentsList()来建立表与表的联系news.getCommentsList().add(comments);//建立comments与news的联系news.save();//保存
         但是最后在数据库中,始终无法建立联系。但是用*news.getComments().add(comments)*,便可以建立联系。

总结

在LitePal中,建立表与表的联系非常简单。但是一定要注意类的属性函数,不要自己命名,而是要利用编译器的自动生成属性的功能。来生成get和set系类函数。因为系统是根据成员的成员名来生成get和set方法。在LitePal的内部,很有可能是根据get()函数的函数名来确定表名,从而建立表与表之间的联系。

0 0