前言
說真的安卓原生的數(shù)據(jù)操作是真的復(fù)雜肆糕,對于我這種渣渣來說確實是個門檻般堆,所以準備先從郭霖大神的開源項目litepal學(xué)起,后期再填坑诚啃,看了多篇文章顯示litepal的性能可能稍微弱一點淮摔,但是對于一些小的應(yīng)用APP,那種差距簡直是微不足道的始赎,況且這個開源庫可讀性和橙,效率都提高了。廢話不多說造垛,下面開始魔招。
簡單的開始-添加依賴
現(xiàn)在一般都是Android Studio 的開發(fā)者,所以直接在項目的build.gradle中添加下面的代碼
<pre>
dependencies {
compile 'org.litepal.android:core:1.3.0'
}
</pre>
配置litepal文件
在assets文件中添加litepal.xml文件(一般assets文件夾新建 并和 src 同目錄很重要)
文件內(nèi)容如下
<pre>
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<dbname value="litepal" ></dbname>
<version value="1" ></version>
<list>
<mapping class="com.example.xxx.testlitepal.Book"></mapping>
</list>
</litepal>
</pre>
其中dbname標簽的value值為數(shù)據(jù)庫名
version標簽的value值為當(dāng)前的數(shù)據(jù)庫版本號
升級時只需版本號 +1
<list>標簽中<mapping class="這里是完整的類的路徑"></mapping>
配置liteAppliaction
<pre>
<application
android:name="org.litepal.LitePalApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme">
</pre>
在AndroidManifest.xml添加 android:name="org.litepal.LitePalApplication"
也可以繼承自己的Application
映射模型類
自己需要先建一個數(shù)據(jù)模型類 然后就可以對數(shù)據(jù)庫進行映射
(抄一段)
LitePal的映射規(guī)則是非常輕量級的五辽,不像一些其它的數(shù)據(jù)庫框架办斑,需要為每個模型類單獨配置一個映射關(guān)系的XML,LitePal的所有映射都是自動完成的杆逗。根據(jù)LitePal的數(shù)據(jù)類型支持乡翅,可以進行對象關(guān)系映射的數(shù)據(jù)類型一共有8種,int罪郊、short蠕蚜、long、float悔橄、double靶累、boolean、String和Date橄维。只要是聲明成這8種數(shù)據(jù)類型的字段都會被自動映射到數(shù)據(jù)庫表中尺铣,并不需要進行任何額外的配置拴曲。
我的建類如下
<pre>
public class Book extends DataSupport{
private int id;
private String author;
private int pages;
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getAuthor() {
return author;
}
public void setAuthor(String author) {
this.author = author;
}
public int getPages() {
return pages;
}
public void setPages(int pages) {
this.pages = pages;
}
}
</pre>
繼承DataSupport可以進行curd操作争舞,不繼承則無法操作。澈灼。竞川。
貌似private 聲明的屬性才能映射到數(shù)據(jù)庫中,可以據(jù)此選擇是否需要映射到數(shù)據(jù)庫中
添加數(shù)據(jù)
- 聲明一個數(shù)據(jù)類
- 設(shè)置該類的屬性值
- 調(diào)用方法save()
示例:
<pre>
Book book=new Book();
book.setAuthor("dfdf");
book.setPages(12);
if(book.save())Toast.makeText(MainActivity.this,"yes",Toast.LENGTH_SHORT).show();
else Toast.makeText(MainActivity.this,"no",Toast.LENGTH_LONG).show();
</pre>
同時你也看到了 save()方法是有返回值的叁熔。
增加數(shù)據(jù)
其實和新增差不多
先進行數(shù)據(jù)賦值委乌,然后對特定條件下的數(shù)據(jù)進行修改更新。
代碼示例如下:
<pre>
ContentValues values = new ContentValues();
//更新內(nèi)容
values.put('author','aaa');
//設(shè)置對應(yīng)的數(shù)據(jù)進行更新
DataSupport.update(Book.class,values,3);
//這種代碼是默認對id=3 的 數(shù)據(jù)項進行更新荣回,當(dāng)然不止這種方式進行更新遭贸。
//下面是對應(yīng)的條件進行更新。心软。下面用法我就不贅述了壕吹,也很簡單
DataSupport.updateAll(Book.class, values, "author = ?", "你好");
//還有一種方法
Book book = new Book();
book.setAuthor("haha")
updateBook.update(2);
</pre>
刪除數(shù)據(jù)
查詢數(shù)據(jù)
相關(guān)參考
郭霖大神的數(shù)據(jù)庫相關(guān)博客
http://blog.csdn.net/guolin_blog/article/details/38461239
簡書其他大佬的
http://www.reibang.com/p/557682e0a9f0
還有很多著蛙,大家多谷歌。
總結(jié)
這個開源庫雖然使用很簡單耳贬,但是稍微犧牲了一些性能踏堡,所以這個大家平時寫項目時候效率很高,但是原生的Sql一定要學(xué)咒劲。就醬紫顷蟆。