這裏來完整地學習一下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