LitePal学习总结 (五)
来源:互联网 发布:clint eastwood 知乎 编辑:程序博客网 时间:2024/06/11 17:11
LitePal框架是郭神的开源框架,郭神博客
先膜拜一下郭神。从本篇开始,开播郭神的LitePal框架的CURD操作。
想要利用LitePal框架使得实体类具有CURD的功能,那么就要先让实体类继承DataSupport这个类。
本篇主要演示插入功能。
以实体类News举例
package org.guya.litepaltest.model;import java.util.ArrayList;import java.util.Date;import java.util.List;import org.litepal.crud.DataSupport;public class News extends DataSupport {private int id;private String title;private String content;private Date publishDate;private int commentCount;private List<Comment> commentList = new ArrayList<Comment>();private List<Category> categoryList = new ArrayList<Category>();...}
代码里只是让实体类继承了DataSupport类,其他啥都没做,so easy!
接下来,我们来演示一下往News表里插入一条数据。
/** * 往News表里插入第一条数据 */private void addMyFirstNews() {News news=new News();news.setTitle("this is my first news's title");news.setContent("this is my first news's content");news.setPublishDate(new Date());news.save();}
然后去onCreate()里调用,别忘了更新一下版本号,因为我们修改了实体类,让其有了新的继承。
@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);SQLiteDatabase db = Connector.getDatabase();addMyFirstNews();}
下面来看一下结果。
这里做一下说明:想在某某表里插入一条记录,首先利用其实体类创建出该实体类对象,然后通过调用setXXX方法来设置表内数据,最后调用save方法保存。
保存成功以后,LitePal会自动为该记录的id赋值到实体id上,以后我们想要调用这个记录的时候,使用其id即可。
注意:save方法的返回值是布尔型的,插入成功返回的是true,否则是false。如果想要在插入记录失败的时候抛出异常,那么在保存记录的时候,请使用saveThrows(),在插入失败的时候会抛出DataSupportException异常。
下面演示表关联
(一)1:1
前面我们介绍了,News表和Introduce表是一对一的关系,一个新闻含有一个介绍,我们可以这样写。
/** * 往News表的一条新闻,对应一个介绍 */private void addNewsAndIntroduce() {News news2=new News();news2.setTitle("我是一个新闻标题");news2.setContent("我是一个新闻内容");news2.setPublishDate(new Date());news2.save();Introduce i=new Introduce();i.setContent("我是一个介绍哟");i.setNews(news2);i.save();}
然后在onCreate()方法里调用。
@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);SQLiteDatabase db = Connector.getDatabase();//addMyFirstNews();addNewsAndIntroduce();}
下面给出效果图
(二)1:N
前面我们介绍了,News表和Comment表是1:N的关系,一个新闻可以有多个评论,一个评论只属于一个新闻。
我们可以用代码这样来描述,如下:
/** * 演示News表和Comment表的1:N关系 */private void addNewsAndComments() {Comment c1 = new Comment();c1.setContent("我是评论1");c1.setPubDate(new Date());c1.save();Comment c2 = new Comment();c2.setContent("我是评论2");c2.setPubDate(new Date());c2.save();Comment c3 = new Comment();c3.setContent("我是评论3");c3.setPubDate(new Date());c3.save();News news3 = new News();news3.setTitle("我是第三个新闻标题啦啦啦啦");news3.setContent("我是第三个新闻的内容啦啦啦");news3.setPublishDate(new Date());news3.getCommentList().add(c1);news3.getCommentList().add(c2);news3.getCommentList().add(c3);news3.save();}
然后在onCreate()方法里调用
@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);SQLiteDatabase db = Connector.getDatabase();// addMyFirstNews();// addNewsAndIntroduce();addNewsAndComments();}
效果图如下:
(三)N:N
前面我们介绍了News表和Category表是满足N:N关系的,即一个新闻可能属于多个目录,一个目录里可能含有多个新闻。
下面我们用代码来演示一下。
/** * 演示News表和Category表的N:N关系 */private void addNewsAndCategories() {News news1 = new News();news1.setTitle("1");news1.setContent("1.1");news1.save();News news2 = new News();news2.setTitle("2");news2.setContent("2.1");news2.save();News news3 = new News();news3.setTitle("3");news3.setContent("3.1");news3.save();News news4 = new News();news4.setTitle("4");news4.setContent("4.1");news4.save();Category c1 = new Category();c1.setName("社会新闻");c1.getNewsList().add(news1);c1.getNewsList().add(news4);c1.save();Category c2 = new Category();c2.setName("娱乐新闻");c2.getNewsList().add(news1);c2.getNewsList().add(news2);c2.save();Category c3 = new Category();c3.setName("军事新闻");c3.getNewsList().add(news3);c3.save();}
然后在onCreate()里调用。
@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);SQLiteDatabase db = Connector.getDatabase();// addMyFirstNews();// addNewsAndIntroduce();// addNewsAndComments();addNewsAndCategories();}
效果图如下:
自此,LitePal的存储演示完毕。啦啦啦
0 0
- LitePal学习总结 (五)
- LitePal学习总结 (三)
- LitePal学习总结 (四)
- LitePal学习总结 (六)
- LitePal学习总结 (七)
- LitePal学习总结 (八)
- LitePal学习总结 (八)...续一
- LitePal学习总结 (八)...续二
- LitePal总结
- LitePal总结
- LitePal学习
- LitePal 学习
- LitePal 使用方法简单总结
- LitePal使用总结
- LitePal学习小结 (一)
- LitePal学习小结 (二)
- LitePal源码学习开篇
- LitePal学习笔记
- 为什么会有extern "C"这样的规定?
- 如何debug makefile文件
- ecshop中点击分类时如果有子分类显示子分类,没有的话就不显示
- 安全加密方案
- iOS 17个常用代码整理
- LitePal学习总结 (五)
- php优化的小细节2
- 对二分查找程序的一次测试
- Linux进程同步之POSIX信号量
- 类继承与原型继承
- C#设置默认打印机-COM和WMI二种方式
- linux下纯C++读取参数配置文件
- javascript下获取guid或者UTC时间作为唯一值
- 节约用水