Litepal使用總結

1.第一步先在項目build.gradle集成? ? compile'org.litepal.android:core:1.6.1'

2.創建assets目錄,創建litepal.xml文件


圖中.dbname表示數據庫名稱? version? 表示版本

list 標簽用來關聯數據庫表的實體類(注意必須使用全路徑)

如果有自己的ba'se'Application要在oncrate方法里面進行初始化操作

LitePal.initialize(this);

Connector.getDatabase();//用于創建數據庫


操作實體類進行增刪改查需要繼承DataSupport

保存 只需要調用save()方法就可以

更新有以下方式

1ContentValues?values?=?new?ContentValues();??

values.put("title",?"今日iPhone6發布");??

DataSupport.update(News.class,?values,?2);?這個靜態的update()方法接收三個參數,第一個參數是Class,傳入我們要修改的那個類的Class就好,第二個參數是ContentValues對象,這三個參數是一個指定的id,表示我們要修改哪一行數據。

修改id為2的數據

2??updateAll()方法表示修改多行記錄,其中第一個參數仍然是Class,第二個參數還是ContentValues對象,第三個參數是一個conditions數組,用于指定修改哪些行的約束條件,返回值表示此次修改影響了多少行數據。

ContentValues?values?=?new?ContentValues();??

values.put("title",?"今日iPhone6?Plus發布");??

DataSupport.updateAll(News.class,?values,?"title?=??",?"今日iPhone6發布");

重點我們看一下最后的這個conditions數組,由于它的類型是一個String數組,我們可以在這里填入任意多個String參數,其中最前面一個String參數用于指定約束條件,后面所有的String參數用于填充約束條件中的占位符(即?號),比如約束條件中有一個占位符,那么后面就應該填寫一個參數,如果有兩個占位符,后面就應該填寫兩個參數,以此類推

3也可以這樣子寫

News?updateNews?=?new?News();??

updateNews.setTitle("今日iPhone6發布");??

updateNews.update(2);?

4

那么如果我們想把news表中標題為“今日iPhone6發布”且評論數量大于0的所有新聞的標題改成“今日iPhone6 Plus發布”,就可以這樣寫:

News?updateNews?=?new?News();??

updateNews.setTitle("今日iPhone6發布");??

updateNews.updateAll("title?=???and?commentcount?>??",?"今日iPhone6發布",?"0");??

但是這種用法有一點需要注意,就是如果我們想把某一條數據修改成默認值,比如說將評論數修改成0,只是調用updateNews.setCommentCount(0)這樣是不能修改成功的,因為即使不調用這行代碼,commentCount的值也默認是0。所以如果想要將某一列的數據修改成默認值的話,還需要借助setToDefault()方法。用法也很簡單,在setToDefault()方法中傳入要修改的字段名就可以了(類中的字段名),比如說我們想要把news表中所有新聞的評論數清零,就可以這樣寫:

News?updateNews?=?new?News();??

updateNews.setToDefault("commentCount");??

updateNews.updateAll();??

刪除操作

delete()方法接收兩個參數,第一個參數是Class,傳入我們要刪除的那個類的Class就好,第二個參數是一個指定的id,表示我們要刪除哪一行數據。

那么比如說我們想刪除news表中id為2的記錄,就可以這樣寫:

DataSupport.delete(News.class,?2);

deleteAll()方法接收兩個參數,第一個參數是Class,傳入我們要刪除的那個類的Class就好,第二個參數是一個conditions數組,用于指定刪除哪些行的約束條件,返回值表示此次刪除了多少行數據,用法和updateAll()方法是基本相同的。

而如果我們想把news表中所有的數據全部刪除掉,就可以這樣寫:

DataSupport.deleteAll(News.class);?

查詢操作

首先是調用了DataSupport的where()方法,在這里指定了查詢條件。where()方法接收任意個字符串參數,其中第一個參數用于進行條件約束,從第二個參數開始,都是用于替換第一個參數中的占位符的。那這個where()方法就對應了一條SQL語句中的where部分。

List?newsList?=?DataSupport.select("title",?"content")??

.where("commentcount?>??",?"0")??

.order("publishdate?desc").find(News.class);??

order()方法中接收一個字符串參數,用于指定查詢出的結果按照哪一列進行排序,asc表示正序排序,desc表示倒序排序,因此order()方法對應了一條SQL語句中的order by部分


篩選查詢 剛才我們查詢到的是所有匹配條件的前10條新聞,那么現在我想對新聞進行分頁展示,翻到第二頁時,展示第11到第20條新聞,這又該怎么實現呢?沒關系,在LitePal的幫助下,這些功能都是十分簡單的,只需要再連綴一個偏移量就可以了,如下所示:

List?newsList?=?DataSupport.select("title",?"content")??

.where("commentcount?>??",?"0")??

.order("publishdate?desc").limit(10).offset(10)??

.find(News.class);??

可以看到,這里我們又添加了一個offset()方法,用于指定查詢結果的偏移量,這里指定成10,就表示偏移十個位置,那么原來是查詢前10條新聞的,偏移了十個位置之后,就變成了查詢第11到第20條新聞了,如果偏移量是20,那就表示查詢第21到第30條新聞,以此類推。因此,limit()方法和offset()方法共同對應了一條SQL語句中的limit部分。



進查詢的用法非常簡單,就只有這么多,其它find()方法也都是同樣的用法,就不再重復介紹了。但是這種查詢方式LitePal并不推薦,因為如果一旦關聯表中的數據很多,查詢速度可能就會非常慢。而且激進查詢只能查詢出指定表的關聯表數據,但是沒法繼續迭代查詢關聯表的關聯表數據。因此,這里我建議大家還是使用默認的懶加載更加合適,至于如何查詢出關聯表中的數據,其實只需要在模型類中做一點小修改就可以了。

public?class?News?extends?DataSupport{??

public?List?getComments()?{??

return?DataSupport.where("news_id?=??",?String.valueOf(id)).find(Comment.class);??

????}??

}??

?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 229,406評論 6 538
  • 序言:濱河連續發生了三起死亡事件,死亡現場離奇詭異,居然都是意外死亡,警方通過查閱死者的電腦和手機,發現死者居然都...
    沈念sama閱讀 99,034評論 3 423
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
    開封第一講書人閱讀 177,413評論 0 382
  • 文/不壞的土叔 我叫張陵,是天一觀的道長。 經常有香客問我,道長,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 63,449評論 1 316
  • 正文 為了忘掉前任,我火速辦了婚禮,結果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己,他們只是感情好,可當我...
    茶點故事閱讀 72,165評論 6 410
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
    開封第一講書人閱讀 55,559評論 1 325
  • 那天,我揣著相機與錄音,去河邊找鬼。 笑死,一個胖子當著我的面吹牛,可吹牛的內容都是我干的。 我是一名探鬼主播,決...
    沈念sama閱讀 43,606評論 3 444
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 42,781評論 0 289
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當地人在樹林里發現了一具尸體,經...
    沈念sama閱讀 49,327評論 1 335
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 41,084評論 3 356
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發現自己被綠了。 大學時的朋友給我發了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 43,278評論 1 371
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 38,849評論 5 362
  • 正文 年R本政府宣布,位于F島的核電站,受9級特大地震影響,放射性物質發生泄漏。R本人自食惡果不足惜,卻給世界環境...
    茶點故事閱讀 44,495評論 3 348
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 34,927評論 0 28
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春,著一層夾襖步出監牢的瞬間,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 36,172評論 1 291
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人。 一個月前我還...
    沈念sama閱讀 52,010評論 3 396
  • 正文 我出身青樓,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 48,241評論 2 375

推薦閱讀更多精彩內容