LitePal的基本用法


快速配置

 

1. 引入Jar包或源碼

首先我們需要將LitePal的jar包引入到項目當中,可以點擊這里查看LitePal的最新版本,選擇你需要的下載即可。下載好了jar包之后,把它復制到項目的libs目錄中就算是引入成功了,如下圖所示:

 

 

如果你不想用jar包的話,也可以把LitePal的源碼下載下來,然后作為一個library庫導入到Eclipse當中,再讓我們的項目去引用這個library庫就可以了。

 

2. 配置litepal.xml

接着在項目的assets目錄下面新建一個litepal.xml文件,並將以下代碼拷貝進去:

<?xml version="1.0" encoding="utf-8"?>  
<litepal>  
    <dbname value="demo" ></dbname>  
  
    <version value="1" ></version>  
  
    <list>  
    </list>  
</litepal>  

配置文件相當簡單,<dbname>用於設定數據庫的名字,<version>用於設定數據庫的版本號,<list>用於設定所有的映射模型,我們稍后就會用到。

 

3. 配置LitePalApplication

由於操作數據庫時需要用到Context,而我們顯然不希望在每個接口中都去傳一遍這個參數,那樣操作數據庫就顯得太繁瑣了。因此,LitePal使用了一個方法來簡化掉Context這個參數,只需要在AndroidManifest.xml中配置一下LitePalApplication,所有的數據庫操作就都不用再傳Context了,如下所示:

<manifest>  
    <application  
        android:name="org.litepal.LitePalApplication"  
        ...  
    >  
    ...  
    </application>  
</manifest>  

當然,有些程序可能會有自己的Application,並在這里配置過了。比如說有一個MyApplication,如下所示:

<manifest>  
    <application  
        android:name="com.example.MyApplication"  
        ...  
    >  
    ...  
    </application>  
</manifest>  

沒有關系,這時只需要修改一下MyApplication的繼承結構,讓它不要直接繼承Application類,而是繼承LitePalApplication類,就可以使用一切都能正常工作了,代碼如下所示:

public class MyApplication extends LitePalApplication {  
    ...  
} 

但是,有些程序可能會遇到一些更加極端的情況,比如說MyApplication需要繼承另外一個AnotherApplication,並且這個AnotherApplication還是在jar包當中的,不能修改它的代碼。這種情況應該算是比較少見了,但是如果你遇到了的話也不用急,仍然是有解釋方案的。你可以把LitePal的源碼下載下來,然后把src目錄下的所有代碼直接拷貝到你項目的src目錄下面,接着打開LitePalApplication類,將它的繼承結構改成繼承自AnotherApplication,再讓MyApplication繼承自LitePalApplication,這樣所有的Application就都可以在一起正常工作了。

 

僅僅三步,我們就將所有的配置工作全部完成了,並且這是一件一本萬利的事情,自此以后,你就可以開心地體驗LitePal提供的各種便利了,就讓我們從建表開始吧。

 

開始建表

 

前面在介紹的時候已經說了,LitePal采取的是對象關系映射(ORM)的模式,那么什么是對象關系映射呢?簡單點說,我們使用的編程語言是面向對象語言,而我們使用的數據庫則是關系型數據庫,那么將面向對象的語言和面向關系的數據庫之間建立一種映射關系,這就是對象關系映射了。

 

但是我們為什么要使用對象關系映射模式呢?這主要是因為大多數的程序員都很擅長面向對象編程,但其中只有少部分的人才比較精通關系型數據庫。而且數據庫的SQL語言晦澀難懂,就算你很精通它,恐怕也不喜歡經常在代碼中去寫它吧?而對象關系映射模式則很好地解決了這個問題,它允許我們使用面向對象的方式來操作數據庫,從而可以從晦澀難懂的SQL語言中解脫出來。

 

那么接下來我們就看一看LitePal中是如何建表的吧。根據對象關系映射模式的理念,每一張表都應該對應一個模型(Model),也就是說,如果我們想要建一張news表,就應該有一個對應的News模型類。新建一個News類,如下所示:

package com.example.databasetest.model;  
  
public class News {  
}  

然后,表中的每一列其實就是對應了模型類中的一個字段,比如news表中有id、title、content、publishdate、commentcount這幾個列,那么在News類中就也應該有這幾個字段,代碼如下所示:

public class News {  
      
    private int id;  
      
    private String title;  
      
    private String content;  
      
    private Date publishDate;  
      
    private int commentCount;  
      
    // 自動生成get、set方法  
    ...  
}  

其中id這個字段可寫可不寫,因為即使不寫這個字段,LitePal也會在表中自動生成一個id列,畢竟每張表都一定要有主鍵的嘛。

 

這里我要特別說明一下,LitePal的映射規則是非常輕量級的,不像一些其它的數據庫框架,需要為每個模型類單獨配置一個映射關系的XML,LitePal的所有映射都是自動完成的。根據LitePal的數據類型支持,可以進行對象關系映射的數據類型一共有8種,int、short、long、float、double、boolean、String和Date。只要是聲明成這8種數據類型的字段都會被自動映射到數據庫表中,並不需要進行任何額外的配置。

 

現在模型類已經建好了,我們還差最后一步,就是將它配置到映射列表當中。編輯assets目錄下的litepal.xml文件,在<list>標簽中加入News模型類的聲明:

<?xml version="1.0" encoding="utf-8"?>  
<litepal>  
    <dbname value="demo" ></dbname>  
  
    <version value="1" ></version>  
  
    <list>  
        <mapping class="com.example.databasetest.model.News"></mapping>  
    </list>  
</litepal>  

注意這里一定要填入News類的完整類名。

 

OK,這樣所有的工作就都已經完成了,現在只要你對數據庫有任何的操作,news表就會被自動創建出來。比如說LitePal提供了一個便捷的方法來獲取到SQLiteDatabase的實例,如下所示:

SQLiteDatabase db = Connector.getDatabase();  

調用一下上述代碼,news表就應該已經創建成功了。我們使用在上一篇文章中學到的SQLite命令來查看一下,打開demo.db數據庫,輸入.table命令,結果如下圖所示:

 

 

可以看到,news表已經存在了。另外兩張android_metadata和table_schema表是自動生成的,我們不用理。接下來我們還可以再查詢一下news表的建表語句,如下圖所示:

 

 

這就是LitePal根據News類中的字段自動幫我們生成的建表語句,由此也說明,建表操作已經成功完成了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2026 CODEPRJ.COM