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
原创粉丝点击