Android數據庫LitePal

前言

其實爲了方便我們對數據庫表進行管理,Android本身就提供了一個幫助類:SQLiteOpenHelper。這個類集創建和升級數據庫於一身,並且自動管理了數據庫版本,算是一個非常好用的工具。

簡述

LitePal是一款開源的Android數據庫框架,它採用了對象關係映射(ORM)的模式,並將我們平時開發時最常用到的一些數據庫功能進行了封裝,使得不用編寫一行SQL語句就可以完成各種建表、増刪改查的操作。

LitePal的基本用法

LitePal的配置

  • 引入jar包、依賴或導入源碼庫
    使用AS gradle依賴
dependencies {
    compile 'org.litepal.android:core:1.5.0'
}

導入jar包和源碼可以點擊這裏選擇你需要的版本下載即可,下載好後具體操作就不細說了

  • 配置litepal.xml
    在項目的assets目錄下面新建一個litepal.xml文件,並將以下代碼拷貝進去:
<?xml version="1.0" encoding="utf-8"?>  
<litepal>  
    <dbname value="demo" />  
    <version value="1" />  
    <list>  
    <mapping class="" />
    </list>  
    <!-- <dbname>是數據庫的名字
         <version>是數據庫的版本號
         <list>是數據庫的映射模型(數據庫表)
         <mapping>是數據庫的映射模型的地址(數據庫表結構) -->
</litepal> 
  • 配置LitePalApplication
    1).在AndroidManifest.xml中配置LitePalApplication,如下:
<manifest>  
    <application  
        android:name="org.litepal.LitePalApplication"  
        ...  
    >  
    ...  
    </application>  
</manifest>

2).如果使用了自定義的Application繼承LitePalApplication即可
3).如果你項目中的自定義APP是繼承了一個jar包中的第三方Application(即:源碼修改不了)
方案一:
1. 你可以把LitePal的源碼下載下來,然後把src目錄下的所有代碼直接拷貝到你項目的src目錄下面
2. 接着打開LitePalApplication類,將它的繼承結構改成繼承自第三方Application
3. 再讓MyApplication繼承自LitePalApplication,這樣所有的Application就都可以在一起正常工作了

方案二:

public class MyOwnApplication extends AnotherApplication {

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

到這裏就完成了LitePal數據庫的配置

建表

根據對象關係映射模式的理念,每一張表都應該對應一個模型(Model),比如對應的News模型

//TODO 使用LitePal只有聲明private的字段纔會被映射到數據表中,如果不想映射的話,修飾符設置爲public、protected、default就可以了
public class News  {
    private int id;
    private String title;
    private String content;
    private Date publishDate;
    private int commentCount;
    // getter、setter
}

建立後再配置到映射表中,編輯asset目錄下的litepal.xml的文件,在標籤下加入News模型類的聲明

<?xml version="1.0" encoding="utf-8"?>
    <litepal>
        <dbname value="demo"></dbname>
        <version value="1"></version>
        <list>
            <mapping class="bz.sunlight.store.jeffdatabasetest.model.News"></mapping>
        </list>
</litepal>

LitePal的增刪改查基本操作

LitePal要存儲數據,首先模型類要繼承DataSupport,繼承了DataSupport類之後,這些實體類就擁有了進行CRUD操作的能力。如下:

public class News extends DataSupport {

}
  • 增加操作:
News news = new News(,,new Date(),2);
news.setTitle("這是 一條新聞標題");
news.setContent("這是一條新聞廣告");
news.setPublishDate(new Date());
news.setCommentCount(2);
news.save();
//id可以不用寫,在save完之後主鍵id會自動遞增賦值,還有save()操作是有返回值的,可以這樣
if (news.save()) {  
    Toast.makeText(context, "添加成功", Toast.LENGTH_SHORT).show();  
} else {  
    Toast.makeText(context, "添加失敗", Toast.LENGTH_SHORT).show();  
}
  • 修改操作
               //第一種方法
                News updateNews = new News();
                updateNews.setContent("這是一條假數據");
                updateNews.update(1);

                //第二種方法
                News updateNews = new News();
                updateNews.setContent("這是一條假數據");
                updateNews.updateAll("id = ?","2");
  • 刪除操作
                //刪除id爲2的數據
                DataSupport.delete(News.class, 2);

                // 刪除id爲1的數據
                DataSupport.deleteAll(News.class, "id = ? ", "1");

                // 刪除全部
                DataSupport.deleteAll(News.class);
  • 查詢操作
   //查詢News表中id爲14的這條記錄
    News news = DataSupport.find(News.class, 14);

    //想要獲取News表中的第一條數據
    News firstNews = DataSupport.findFirst(News.class);

    //想要獲取News表中的最後一條數據
    News lastNews = DataSupport.findLast(News.class);

    //想把News表中id爲141517的數據都查出來
    List<News> mNewsList = DataSupport.findAll(News.class, 14, 15, 17);

    //數據太多了,其實你只要前3行就行了
    List<News> mNewsList1 = DataSupport.limit(3).find(News.class);

    //想進行分頁展示,那麼翻頁了,怎麼辦?可以添加一個偏移量就好了
    List<News> mNewsList2 = DataSupport.limit(3).offset(3).find(News.class);

好了,到目前爲止你已經算是對LitePal的用法入門了,本篇文章內容主要講的是表一對一的情況。有興趣的朋友也可以嘗試去實現多對一、一對多的表結構,只需要注意的的是在litepal.xml裏面的版本version升級和在List添加新建表的類,其他增刪改查形式都差不多。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章