前言
偶然發(fā)現(xiàn)郭大神的開源數(shù)據(jù)庫 真的是精簡無敵~~個人認(rèn)為為GreenDao好用多了
開源地址:https://github.com/LitePalFramework/LitePal
作者的關(guān)于此的博客:http://blog.csdn.net/sinyu890807/article/category/2522725
LitePal的快速配置
1.引入Jar包或源碼
使用Android Studio在項目的build.gradle中添加:
dependencies {
compile 'org.litepal.android:core:1.3.0'
}
Eclipse可以到github上下載jar包.
2. 配置litepal.xml
在項目的assets目錄下面新建一個litepal.xml文件,內(nèi)容如下:
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<dbname value="Code-Plus"></dbname>
<version value="1"></version>
<list>
<mapping class="com.lee.codeplus.db.ArticleDB"></mapping>
</list>
</litepal>
解析
<dbname>是數(shù)據(jù)庫的名字
<version>是數(shù)據(jù)庫的版本號
<list>是數(shù)據(jù)庫的映射模型(數(shù)據(jù)庫表)
<mapping>是數(shù)據(jù)庫的映射模型的地址(數(shù)據(jù)庫表結(jié)構(gòu))
3. 配置LitePalApplication
在AndroidManifest.xml中配置LitePalApplication,如下:
<manifest>
<application
android:name="org.litepal.LitePalApplication"
...
>
...
</application>
</manifest>
如果已經(jīng)有自己的Application岭参,那么久繼承一下就好了去枷,如下:
public class MyApplication extends LitePalApplication {
...
}
4.LitePal的建表
根據(jù)對象關(guān)系映射模式的理念彼念,每一張表都應(yīng)該對應(yīng)一個模型(Model)狞尔,建表先要新建一個模型類
package com.lee.codeplus.db;
import org.litepal.crud.DataSupport;
/**
* Created by a5055 on 2017/9/6.
*/
public class ArticleDB extends DataSupport {
private long id;
private int articleID;
private String data;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public int getArticleID() {
return articleID;
}
public void setArticleID(int articleID) {
this.articleID = articleID;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
}
注!
只有private修飾的字段才會被映射到數(shù)據(jù)庫表中斯议,即如果有某一個字段不想映射的話撒轮,就設(shè)置為public乞旦、protected或者default修飾符就可以了。
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ù)庫表中畏腕,并不需要進行任何額外的配置。
配置
建立好Model后茉稠,我們就把他配置到映射列表中描馅,即編輯assest目錄下的litepal.xml文件,在<list>標(biāo)簽中加入DEST類的聲明战惊,這里要注意流昏,要類的完整類名扎即。
LitePal 升級數(shù)據(jù)庫 (2種情況)
1.新增表
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<dbname value="Code-Plus"></dbname>
<version value="1"></version>
<list>
<mapping class="com.lee.codeplus.db.ArticleDB"></mapping>
<mapping class="com.lee.codeplus.db.ArticleDB2"></mapping>
</list>
</litepal>
把litepal.xml中的version的值加一即可
2.表結(jié)構(gòu)改變
直接修改對象 并且把litepal.xml中的version的值加一即可
LitePal的存儲操作
LitePal要存儲數(shù)據(jù),首先模型類要繼承DataSupport况凉,即:
public class ArticleDB extends DataSupport {
private long id;
private int articleID;
private String data;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public int getArticleID() {
return articleID;
}
public void setArticleID(int articleID) {
this.articleID = articleID;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
}
繼承了DataSupport類之后谚鄙,這些實體類就擁有了進行CRUD操作的能力。
存儲操作:
public static boolean save(Article article) {
ArticleDB db = new ArticleDB();
db.setArticleID(article.getId());
db.setData(JSON.toJSONString(article));
return db.save();
}
LitePal的修改操作
如果想把ArticleDB表中id為4的articleID改為"1"刁绒,可以這樣寫:
ContentValues values = new ContentValues();
values.put("articleID", "1");
DataSupport.update(ArticleDB .class, values, 4);
//或者用下面這種方法
ArticleDB db= new ArticleDB ();
db.setArticleID(1);
db.update(4);
如果想把ArticleDB表中所有articleID為"1"的改為"2"可以這樣寫:
ContentValues values = new ContentValues();
values.put("destId", "2");
DataSupport.updateAll(ArticleDB .class, values, "articleID= ?", "1");
//或者用下面這種方法
ArticleDB db= new ArticleDB ();
db.setdestId("2");
db.updateAll("articleID= ?", "1");
LitePal的刪除操作
比如說我們想刪除ArticleDB 表中id為2的記錄闷营,就可以這樣寫:
DataSupport.delete(ArticleDB .class, 2);
想把ArticleDB 表中articleID為“1”的所有數(shù)據(jù)刪除,就可以這樣寫:
DataSupport.deleteAll(ArticleDB .class, "articleID= ? ", "1");
如果我們想把ArticleDB 表中所有的數(shù)據(jù)全部刪除掉知市,就可以這樣寫:
DataSupport.deleteAll(ArticleDB .class);
LitePal的查詢操作
查詢ArticleDB 表中id為1的這條記錄傻盟,使用LitePal就可以這樣寫:
ArticleDB db= DataSupport.find(ArticleDB .class, 1);
想要獲取ArticleDB 表中的第一條數(shù)據(jù),只需要這樣寫:
ArticleDB firstdb = DataSupport.findFirst(ArticleDB .class);
想要獲取ArticleDB 表中的最后一條數(shù)據(jù)嫂丙,只需要這樣寫:
ArticleDB lastdb = DataSupport.findLast(ArticleDB .class);
想把ArticleDB 表中id為1娘赴、3、5跟啤、7的數(shù)據(jù)都查出來诽表,只需要這樣寫:
List<ArticleDB > dbs = DataSupport.findAll(ArticleDB .class, 1, 3, 5, 7);
查詢所有數(shù)據(jù),只需要這樣寫:
List<ArticleDB > dbs = DataSupport.findAll(ArticleDB .class);
想查詢ArticleDB 表中所有articleID為"1"的數(shù)據(jù)隅肥,就可以這樣寫:
List<ArticleDB > dbs = DataSupport.where("articleID= ?", "1").find(ArticleDB .class);
只要data這一列數(shù)據(jù)
List<ArticleDB > dbs = DataSupport.select("data").where("articleID= ?", "1").find(ArticleDB .class);
按照id倒序排列
List<ArticleDB > dbs = DataSupport.select("data").where("articleID= ?", "1").order("id").find(ArticleDB .class);
只要前10行
List<ArticleDB > dbs = DataSupport.select("data").where("articleID= ?", "1").order("id").limit(10).find(ArticleDB .class);
分頁展示
List<ArticleDB > dbs = DataSupport.select("data").where("articleID= ?", "1").order("id").limit(10).offset(10).find(ArticleDB .class);
LitePal的聚合函數(shù)
http://blog.csdn.net/guolin_blog/article/details/40614197
到這看看~~累死了