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()函数的函数名来确定表名,从而建立表与表之间的联系。
- Litepal使用心得之建立数据之间的联系
- Android之Litepal的使用
- Android数据库(四)之使用LitePal建立关联表
- UI<------>main code 之间联系的建立:
- Cassandra数据分布之3几个概念之间的联系
- 使用LitePal建立表关联
- Android sqlite 之LitePal的使用
- 使用Segue在两个UIViewController之间建立联系-NavigationController
- 第6章 数据存储之使用LitePal操作数据库
- Litepal的使用
- LitePal的简单使用
- litepal开源库的使用
- litepal的使用记录
- LitePal的使用
- Litepal的简单使用
- Litepal的使用
- LitePal的使用
- 利用hibernate建立底层数据的心得
- 网易2016年研发工程师编程题(2)
- CLR----公共语言运行时
- Linux内核CFS调度器
- Android源码编译整理总结
- VMware 12中安装CentOS7的相关问题(持续更新)
- Litepal使用心得之建立数据之间的联系
- 【GDOI 2016模拟3.16】装饰
- Http client
- MFC中分割字符串
- 局部敏感哈希matlab代码解读
- Android 6.0新特性
- 深入分析java.util.concurrent并发包下的CountDownLatch.java
- Java多线程用法解析
- android-studio下ndk的配置和简单JNI调用遇到的问题