这里来完整地学习一下LitePal存储数据的全部用法。java
一、在上一篇中咱们只建了News一张表,如须要建多张表同样的操做,使用LitePal就能够把相应的表自动建立出来ide
二、继承了DataSupport类以后学习
这些实体类就拥有了进行CRUD操做的能力,那么好比想要存储一条数据到news表当中,能够这样:this
public void SaveData() { News n = new News(); n.setId(1);//可不用这个ID n.setTitle("这里是标题"); n.setContent("内容"); n.setPublishDate(new Date()); n.setCommentCount(1); Issave = n.save();//返回值 }
很好操做的几行代码,这里不须要SQLiteDatabase,不须要ContentValues,不须要经过列名组装数据,甚至不须要指定表名,只须要new出一个News对象,而后把要存储的数据经过setter方法传入,最后调用一下save()方法就行了,而这个save()方法就是从DataSupport类中继承而来的了3d
看到了那个save()方法,save()方法仍是有返回值的,咱们能够根据返回值来判断存储是否成功code
if (Issave) { Toast.makeText(MainActivity.this, "成功了", Toast.LENGTH_SHORT).show(); } else { Toast.makeText(MainActivity.this, "失败啦", Toast.LENGTH_SHORT).show(); }
三、save()方法返回的是一个布尔值,用于表示存储成功仍是失败,但同时也说明这个方法是不会抛出异常的。若是要存储失败的话就抛出异常,而不是返回一个false,那就还能够用另外一个saveThrows()方法来代替对象
public void SaveData() { News n = new News(); n.setId(1); n.setTitle("这是标题"); n.setContent("内容"); n.setPublishDate(new Date()); n.setCommentCount(1); n.saveThrows(); }
saveThrows()方法来存储数据,一旦存储失败就会抛出一个DataSupportException异常,咱们能够经过对这个异常进行捕获来处理存储失败的状况blog
四、使用的insert()方法来存储数据时是有返回值的,返回的是插入行对应的id。但LitePal中的save()方法返回的是布尔值,那么我要拿到存储成功以后这条数据对应的id,因此,LitePal使用了一种比较好的的作法,咱们在每一个实体类中都定义了一个id字段,当调用save()方法或saveThrows()方法存储成功以后,LitePal会自动将该条数据对应的id赋值到实体类的id字段上。继承
public void SaveData() { News n = new News(); n.setId(1); n.setTitle("这是标题"); n.setContent("这是内容"); n.setPublishDate(new Date()); n.setCommentCount(1); Log.d("TAG", "ID是 " + n.getId()); Issave = n.save(); Log.d("TAG", "ID是 " + n.getId()); }
这里在save以前打印一下news的id,在save以后再打印一次,而后运行:get
在save以前打印的id,,在save以后打印的id,说明此时id已经被赋值了
五、LitePal对集合数据的存储还专门提供了一个方法,好比说咱们有一个News集合,那么应该怎样去存储这个集合中的每条News
List<News> newsList; ... for (News news : newsList) { news.save(); }
那么经过一个循环来遍历出这个集合中的每个News对象,而后逐个调用save()方法。这样的写法固然是能够的,可是效率会相对来讲低一些,由于调用save()方法的时候除了会执行存储操做以外,还会去分析News类的关联关系,那么每次循环都去从新分析一遍关联关系显然是比较耗时的。所以,LitePal提供了一个saveAll()方法,专门用于存储集合数据的
List<News> newsList; ... DataSupport.saveAll(newsList);
saveAll()方法接收一个Collection集合参数,只须要把待存储的集合数据传入就能够。
DEMO下载:
CSDN:下载
百度网盘下载:下载 提取码:e1ey