開源庫LitePal的用法

前言


   LitePal是一個開源的Android庫,允許開發人員使用SQLite數據庫非常容易。您可以完成大多數數據庫操作,甚至不需要編寫SQL語句,包括創建或升級表,壓縮操作,聚合函數等。LitePal的設置也很簡單,您可以將它集成到您的項目中少於5分鐘。

內容


LitePal的快速配置

1.引入Jar包或源碼

   使用Android Studio在項目的build.gradle中添加下面依賴:


dependencies {
    compile 'org.litepal.android:core:1.3.2'
}

   使用Eclipse到這裏下載好了jar包之後,把它複製到項目的libs目錄中就算是引入成功了。

2.配置litepal.xml

   在項目的assets目錄下面新建一個litepal.xml文件,內容如下:

<?xml version="1.0" encoding="utf-8"?>
<litepal>

    <dbname value="cool_weather" />

    <version value="1" />

    <list>
        <mapping class="com.example.yuxuehai.coolweather.bean.Province" />
        <mapping class="com.example.yuxuehai.coolweather.bean.City" />
        <mapping class="com.example.yuxuehai.coolweather.bean.County" />
    </list>

</litepal>

   其中:

  • 是數據庫的名字
  • 是數據庫的版本號
  • 是數據庫的映射模型(數據庫表)
  • 是數據庫的映射模型的地址(數據庫表結構)

3. 配置LitePalApplication

   在AndroidManifest.xml中配置LitePalApplication,如下:

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

   如果是已經有自己的application,則可以繼承LitePalApplication或者在代碼中加入如下代碼:

public class MyApplication extends LitePalApplication {  
    ...  
}

public class MyApplication extends AnotherApplication{  

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

LitePal的建表

   根據對象關係映射模式的理念,每一張表都應該對應一個模型(Model),建表先要新建一個模型類,新建一個Province類,如下:

public class Province extends DataSupport {

    private int id;
    private String provinceName;
    private int provinceCode;

    public int getProvinceCode() {
        return provinceCode;
    }

    public void setProvinceCode(int provinceCode) {
        this.provinceCode = provinceCode;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getProvinceName() {
        return provinceName;
    }

    public void setProvinceName(String provinceName) {
        this.provinceName = provinceName;
    }
}

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

注意:只有private修飾的字段纔會被映射到數據庫表中,即如果有某一個字段不想映射的話,就設置爲public、protected或者default修飾符就可以了。

   建立好Model後,我們就把他配置到映射列表中,即編輯assest目錄下的litepal.xml文件,在標籤中加入DEST類的聲明,這裏要注意,要類的完整類名。

<?xml version="1.0" encoding="utf-8"?>
<litepal>

    <dbname value="cool_weather" />

    <version value="1" />

    <list>
        <mapping class="com.example.yuxuehai.coolweather.bean.Province" />
    </list>

</litepal>

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

LitePal的升級表

1.添加新表

   首先創建一個新的模型類,然後把它設置到litepal.xml中,如下:

<?xml version="1.0" encoding="utf-8"?>
<litepal>

    <dbname value="cool_weather" />

    <version value="1" />

    <list>
        <mapping class="com.example.yuxuehai.coolweather.bean.Province" />
        <mapping class="com.example.yuxuehai.coolweather.bean.City" />
        <mapping class="com.example.yuxuehai.coolweather.bean.County" />
    </list>

</litepal>

   然後,把litepal.xml中的version的值加一即可,如下:

<?xml version="1.0" encoding="utf-8"?>
<litepal>

    <dbname value="cool_weather" />

    <version value="2" />

    <list>
        <mapping class="com.example.yuxuehai.coolweather.bean.Province" />
        <mapping class="com.example.yuxuehai.coolweather.bean.City" />
        <mapping class="com.example.yuxuehai.coolweather.bean.County" />
    </list>

</litepal>

2.舊錶添加新列

   首先在需要升級的模型類中添加新的private修飾的字段,然後再把litepal.xml中的version的值加一即可,這裏就不展示代碼了,讀者可以自己去體驗。

LitePal的操作

   LitePal要存儲數據,首先模型類要繼承DataSupport,即:

public class Province extends DataSupport {
    ...
    ...
}

   繼承了DataSupport類之後,這些實體類就擁有了進行CRUD操作的能力。

1.存儲操作

   創建對象,爲對象的屬性進行賦值,最後調用save()方法即可存儲,如下:

Province province = new Province();
province.setProvinceName(provinceObject.getString("name"));
province.setProvinceCode(provinceObject.getInt("id"));
province.save();

   更好的是,save()方法是有返回值的,讀者可以根據自己需要對其進行判斷後做出一些操作:

if (mDest.save()) {  
    Toast.makeText(context, "存儲成功", Toast.LENGTH_SHORT).show();  
} else {  
    Toast.makeText(context, "存儲失敗", Toast.LENGTH_SHORT).show();  
}

2.修改操作

   如果想把Province表中id爲1的provinceCode改爲”1”,可以這樣寫:

ContentValues values = new ContentValues();  
values.put("provinceCode", "1");  
DataSupport.update(Pronvice.class, values, 1);  

//或者用下面這種方法

Province updateNews = new Province();  
updateNews.setProvinceCode(1) 
updateNews.update(1);

   如果想把Province表中所有id爲”1”的改爲”2”可以這樣寫:

ContentValues values = new ContentValues();  
values.put("provinceCode", "2");  
DataSupport.updateAll(DEST.class, values, "provinceCode = ?", "1");  

//或者用下面這種方法

Province updateNews = new Province();  
updateNews.setProvinceCode("2");  
updateNews.updateAll("setProvinceCode = ?", "1");

3.LitePal的刪除操作

   比如說我們想刪除Province表中id爲2的記錄,就可以這樣寫:

DataSupport.delete(Province.class, 2);

   想把Province表中id爲“1”的所有數據刪除,就可以這樣寫:

DataSupport.deleteAll(Province.class, "destId = ? ", "1");

   想把Province表中所有數據刪除,就可以這樣寫:

DataSupport.deleteAll(Province.class);

LitePal的查詢操作

   查詢Province表中id爲1的這條記錄,使用LitePal就可以這樣寫:

Province mProvince = DataSupport.find(Province.class, 1);

   想要獲取Province表中的第一條數據,只需要這樣寫:

Province mProvince = DataSupport.findFirst(Province.class);

   想要獲取Province表中的最後一條數據,只需要這樣寫:

Province mProvince = DataSupport.findLast(Province.class);

   查詢Province表中id爲1,2,3的這條記錄,使用LitePal就可以這樣寫:

List<Province> mProvince = DataSupport.findAll(Province.class,1,2,3);

   查詢所有數據,只需要這樣寫:

List<Province> mProvince = DataSupport.findAll(Province.class);

   筆者只是對一些簡單的操作進行介紹,如想學習更多操作請瀏覽guolin郭霖老師的博客點這裏

發佈了37 篇原創文章 · 獲贊 42 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章