LitePal的使用

不怕跌倒,所以飛翔

本文知識點介紹

  • LitePal的集成和簡單的使用
  • LitePal中實現增刪改查
  • LitePal一些常用的API介紹
  • LitePal的總結

1.LitePal的集成

LitePal是郭霖大神寫的,這里知識簡單的使用,如果有什么不對的地方希望大家指出. 項目源碼地址

1.1LitePal的集成

  • 引入相應的類庫
  • 創(chuàng)建litepal.xml
  • 更換繼承的Application

1.1.1引入相應的類庫

compile 'org.litepal.android:core:1.6.1'

這個可以去項目源碼中找到最新的類庫

1.1.2創(chuàng)建相應的litepal.xml文件

首先這個文件是在相應的assets文件夾下(創(chuàng)建方法為項目文件夾下New->Folder->Assets Folder就可以創(chuàng)建相應的assets文件夾了),然后在assets文件夾下創(chuàng)建一個相應的litepal.xml文件夾,下面是具體的內容:

<?xml version="1.0" encoding="utf-8"?>
<litepal>
    <dbname value="file"/>
    <version value="1"/>
    <list>
        <mapping class="com.hejin.download.FileInfo"/>
    </list>
</litepal>

這里說明幾點問題:

  1. dbname標簽是相應的數據庫名稱
  2. version標簽是相應的數據庫的版本,這里注意當里面引用的內容發(fā)生改變的時候,要升級相應的版本
  3. list標簽是那些對象需要數據庫管理,這里注意mapping里面的路徑一定要是全路徑名稱
  4. 這里面list標簽中的實體類都應該繼承DataSupport這個類,這個千萬別忘記

1.1.3更換繼承的Application

這里其實份兩種情況:

  • 已經有繼承的Application
  • 直接繼承LitePalApplication

為什么分為這兩種情況呢?因為有的項目中可能之前實現Application已經繼承了一個其他類型的Application了,那么這個時候因為java的單繼承,所以這里就不能直接繼承LitePalApplication了,但是LitePal已經幫我們想到這個問題了,所以說下面我們分兩種情況實現一下:

  • 第一種

直接在相應項目中的Application中的onCreat()方法中初始化一下就可以了,像下面這樣:

    @Override
    public void onCreate() {
        super.onCreate();
        LitePal.initialize(this);
    }

這樣你的Application可以隨便繼承其他的Application

在manifest.xml中引入相應的Application,也就是你之前的Application

  • 第二種

直接繼承相應的LitePalApplication這里就不用在onCreat()中調用LitePal.initialize(this);這個方法了;

這個就比較特殊了要在相應的application標簽中添加Application的時候要這樣寫android:name="org.litepal.LitePalApplication"

上面這些方法的話就基本上可以實現相應的初始化就完成了

2.LitePal中實現增刪改查

2.1LitePal添加數據

關于相應的增加操作,這里主要是通過對象的save()進行的,怎么說呢?其實你只要給相應的類添加了相應的集體參數然后調用相應的save()方法就可以了.具體代碼如下:

        LitePalBean zhangSanBean = new LitePalBean("張三", "20", "男");
        zhangSanBean.save();
        LitePalBean liSiBean = new LitePalBean("李四", "25", "男");
        liSiBean.save();

這樣就形成了相應的數據庫的表結構了,也就是有了相應的數據庫了,但是如果你在手機上調試的不Root的話是看不到的.這里說明一個問題添加相同的內容是可以添加進去的

2.2LitePal刪除數據

關于刪除數據的操作,這里主要是通過對象的delete()或者deleteAll()進行刪除,具體代碼如下:

        /*這里就是刪除所有名字是張三的*/
        DataSupport.deleteAll(LitePalBean.class, "name =?", "張三");

        LitePalBean zhangSanBean = new LitePalBean("張三", "20", "男");
        zhangSanBean.save();
        zhangSanBean.delete();

這里刪除的兩種方式:

  • 直接對象刪除:也就是對象直接調用delete();方法進行;
  • 根據類型進行刪除,其實這里就是相當于SQLite進行刪除,這里有必要說明一下第二個語句傳入內容如果為"name=?"代表的是所有name為后面字段的內容,也就是所有名字為張三的內容都會刪除.那么你會問了如果這里面我傳入兩個內容呢?比如"name=? and age=?"對沒錯,就是用and進行連接

2.3LitePal更新數據

這里其實很簡單,就是更改完相應的數據直接save保存就可以了,代碼如下:

        LitePalBean zhaoWuBean = new LitePalBean("趙五", "25", "男");
        zhaoWuBean.save();
        zhaoWuBean.setAge("30");
        zhaoWuBean.save();

這里有一個問題,感覺應該是先取出來這個對象在進行操作才對,才能確保內容的正確性.

2.4LitePal查詢方法

關于查詢數據的操作,主要用到find()和findAll()等相應的方法,具體代碼如下:

   List<LitePalBean> all = DataSupport.findAll(LitePalBean.class);
        for (int i = 0; i < all.size(); i++) {
            Log.e(TAG, "query: " + all.get(i).toString());
        }
    }

這里只是查詢出所有的內容進行相應的打印

3.LitePal常用的API

  • DataSupport.findFirst(XXX.class)
    查詢XXX列表中的第一個元素

  • DataSupport.findLast(XXX.class)
    查詢XXX列表中的最后一個元素

  • DataSupport.select()
    根據SQLite中的關鍵字進行查找,例如DataSupport.select("name","age").find(XXX.class) 查詢的是相應名字和年齡的兩列數據 其他的數據是查不出來的.

  • DataSupport.where()
    相當于SQLite中的where關鍵字查找,這里還是舉個例子->DataSupport.where("name=?","張三").find(XXX.class) 查詢的是所有名字為張三的數據內容;

  • DataSupport.order()
    相當于SQLite中的order關鍵字查找,主要是排序方式,這里還是舉個例子->DataSupport.order(price desc).find(XXX.class) 這里面是按照降序進行排列的;desc標識降序排列,**asc
    **代表升序排列

  • DataSupport.limit()
    查詢數據庫的結果的數量 例子->DataSupport.limit(3).find(XXX.class); 查詢3條數據

  • DataSupport.offset()
    查詢制定結果的偏移量 例子(我想查詢第二條第三條和第四條)-> DataSupport.limit(3).offset(1).find(XXX.class); 這里是從第一條開始,但是不包含相應的第一條

上面的內容可以都是可以連起來查的,寫法和構建者的模式類似

當然LitePal也支持相應的原生查找DataSupport.findBySQL(),但是這里返回一個相應的Cursor對象,要根據SQLite的方式取出相應的內容,這里面就不去講解了,其實是我不會...

?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末迅矛,一起剝皮案震驚了整個濱河市扮念,隨后出現的幾起案子迁客,更是在濱河造成了極大的恐慌交播,老刑警劉巖檀何,帶你破解...
    沈念sama閱讀 216,692評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件蝇裤,死亡現場離奇詭異,居然都是意外死亡埃碱,警方通過查閱死者的電腦和手機猖辫,發(fā)現死者居然都...
    沈念sama閱讀 92,482評論 3 392
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來砚殿,“玉大人啃憎,你說我怎么就攤上這事∷蒲祝” “怎么了辛萍?”我有些...
    開封第一講書人閱讀 162,995評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長羡藐。 經常有香客問我贩毕,道長,這世上最難降的妖魔是什么仆嗦? 我笑而不...
    開封第一講書人閱讀 58,223評論 1 292
  • 正文 為了忘掉前任辉阶,我火速辦了婚禮,結果婚禮上瘩扼,老公的妹妹穿的比我還像新娘谆甜。我一直安慰自己,他們只是感情好集绰,可當我...
    茶點故事閱讀 67,245評論 6 388
  • 文/花漫 我一把揭開白布规辱。 她就那樣靜靜地躺著,像睡著了一般栽燕。 火紅的嫁衣襯著肌膚如雪罕袋。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,208評論 1 299
  • 那天碍岔,我揣著相機與錄音浴讯,去河邊找鬼。 笑死付秕,一個胖子當著我的面吹牛兰珍,可吹牛的內容都是我干的。 我是一名探鬼主播询吴,決...
    沈念sama閱讀 40,091評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼掠河,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了猛计?” 一聲冷哼從身側響起唠摹,我...
    開封第一講書人閱讀 38,929評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎奉瘤,沒想到半個月后勾拉,有當地人在樹林里發(fā)現了一具尸體,經...
    沈念sama閱讀 45,346評論 1 311
  • 正文 獨居荒郊野嶺守林人離奇死亡盗温,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 37,570評論 2 333
  • 正文 我和宋清朗相戀三年藕赞,在試婚紗的時候發(fā)現自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片卖局。...
    茶點故事閱讀 39,739評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡斧蜕,死狀恐怖,靈堂內的尸體忽然破棺而出砚偶,到底是詐尸還是另有隱情批销,我是刑警寧澤,帶...
    沈念sama閱讀 35,437評論 5 344
  • 正文 年R本政府宣布染坯,位于F島的核電站均芽,受9級特大地震影響,放射性物質發(fā)生泄漏单鹿。R本人自食惡果不足惜掀宋,卻給世界環(huán)境...
    茶點故事閱讀 41,037評論 3 326
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望仲锄。 院中可真熱鬧劲妙,春花似錦、人聲如沸昼窗。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,677評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽澄惊。三九已至唆途,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間掸驱,已是汗流浹背肛搬。 一陣腳步聲響...
    開封第一講書人閱讀 32,833評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留毕贼,地道東北人温赔。 一個月前我還...
    沈念sama閱讀 47,760評論 2 369
  • 正文 我出身青樓,卻偏偏與公主長得像鬼癣,于是被迫代替她去往敵國和親陶贼。 傳聞我的和親對象是個殘疾皇子啤贩,可洞房花燭夜當晚...
    茶點故事閱讀 44,647評論 2 354

推薦閱讀更多精彩內容