LitePal简单用法
?
簡(jiǎn)單介紹一下LitePal:
LitePal是一款開(kāi)源的Android數(shù)據(jù)庫(kù)框架,采用了對(duì)象關(guān)系映射(ORM)的模式,將平時(shí)開(kāi)發(fā)時(shí)最常用的一些數(shù)據(jù)庫(kù)功能進(jìn)行了封裝,使得開(kāi)發(fā)者不用編寫(xiě)一行SQL語(yǔ)句就可以完成各種建表、増刪改查的操作。并且LitePal很“輕”,jar包大小不到100k,而且近乎零配置,這一點(diǎn)和Hibernate這類(lèi)的框架有很大區(qū)別。目前LitePal的源碼已經(jīng)托管到了GitHub上。
1、準(zhǔn)備需要的JAR包 這里下載
下載好了jar包之后,復(fù)制到項(xiàng)目的libs目錄中然后引用
當(dāng)然如果不想用jar包的話,也可以把LitePal的源碼下載下來(lái),然后作為一個(gè)library庫(kù)導(dǎo)入到項(xiàng)目當(dāng)中,再引用這個(gè)library庫(kù)就可以了。
這里我使用的事JAR包進(jìn)行介紹
2、設(shè)置litepal.xml文件,這里比較重要
首先我們需要建一個(gè)assets文件夾,這個(gè)文件夾和java文件平級(jí)
其次在assets文件下新建一個(gè)litepal.xml,為了快速可以直接copy一個(gè)進(jìn)去
<?xml version="1.0" encoding="utf-8"?> <litepal> <dbname value="demo" ></dbname> 庫(kù)名稱(chēng)<version value="1" ></version> 庫(kù)版本,可升級(jí)<list> 這里是添加表名,后面講</list> </litepal><dbname>用于設(shè)定數(shù)據(jù)庫(kù)的名字,<version>用于設(shè)定數(shù)據(jù)庫(kù)的版本號(hào),<list>用于設(shè)定所有的映射模型
3、需要配置Application
由于操作數(shù)據(jù)庫(kù)時(shí)需要用到Context,而我們顯然不希望在每個(gè)接口中都去傳一遍這個(gè)參數(shù),那樣操作數(shù)據(jù)庫(kù)就顯得太繁瑣了。因此,LitePal使用了一個(gè)方法來(lái)簡(jiǎn)化掉Context這個(gè)參數(shù),只需要在AndroidManifest.xml中配置一下Application,所有的數(shù)據(jù)庫(kù)操作就都不用再傳Context了
可能有些程序可能會(huì)有自己的Application,并在這里配置過(guò)了,那么我們就用其他辦法解決,那就只需要修改一下myApplication的繼承結(jié)構(gòu),讓它不要直接繼承Application類(lèi),而是繼承我們定義的LitePalApplication類(lèi)
到了這里我們的準(zhǔn)備工作已經(jīng)做完了,接下來(lái)我們就可以開(kāi)始建表了
4、根據(jù)對(duì)象關(guān)系映射模式的理念,每一張表都應(yīng)該對(duì)應(yīng)一個(gè)模型(Model),也就是說(shuō),如果我們想要建一張news表,就應(yīng)該有一個(gè)對(duì)應(yīng)的News模型類(lèi)。新建一個(gè)News類(lèi),LitePal要求所有的實(shí)體類(lèi)都要繼承自DataSupport這個(gè)類(lèi)
public class News extends DataSupport { //id這個(gè)字段可寫(xiě)可不寫(xiě),因?yàn)榧词共粚?xiě)這個(gè)字段,LitePal也會(huì)在表中自動(dòng)生成一個(gè)id列,畢竟每張表都一定要有主鍵的private int id;private String title;private String content;private Date publishDate;private int commentCount;public int getId() {return id;}public void setId(int id) {this.id = id;}public String getTitle() {return title;}public void setTitle(String title) {this.title = title;}public String getContent() {return content;}public void setContent(String content) {this.content = content;}public Date getPublishDate() {return publishDate;}public void setPublishDate(Date publishDate) {this.publishDate = publishDate;}public int getCommentCount() {return commentCount;}public void setCommentCount(int commentCount) {this.commentCount = commentCount;} }LitePal的映射規(guī)則是非常輕量級(jí)的,不像一些其它的數(shù)據(jù)庫(kù)框架,需要為每個(gè)模型類(lèi)單獨(dú)配置一個(gè)映射關(guān)系的XML,LitePal的所有映射都是自動(dòng)完成的,LitePal的數(shù)據(jù)類(lèi)型支持,可以進(jìn)行對(duì)象關(guān)系映射的數(shù)據(jù)類(lèi)型一共有8種,int、short、long、float、double、boolean、String和Date。只要是聲明成這8種數(shù)據(jù)類(lèi)型的字段都會(huì)被自動(dòng)映射到數(shù)據(jù)庫(kù)表中,并不需要其他的任何配置。
現(xiàn)在表已經(jīng)建好,我們需要將表名在assets的litepal.xml中申明(寫(xiě)進(jìn)去映射)
<?xml version="1.0" encoding="UTF-8" ?> <litepal><!--數(shù)據(jù)庫(kù)的名字--><dbname value="demo"></dbname><!--數(shù)據(jù)庫(kù)的版本號(hào)--><version value="1"></version><!--表--><list><mapping class="com.example.administrator.mylitepal.News"></mapping></list> </litepal>現(xiàn)在基本已經(jīng)完成,現(xiàn)在只要你對(duì)數(shù)據(jù)庫(kù)有任何的操作,news表就會(huì)被自動(dòng)創(chuàng)建出來(lái)。比如說(shuō)LitePal提供了一個(gè)便捷的方法來(lái)獲取到SQLiteDatabase的實(shí)例,在onCreate中調(diào)用
SQLiteDatabase db = Connector.getDatabase();這里初始化一下
public class myApplication extends LitePalApplication {@Overridepublic void onCreate() {super.onCreate();LitePal.initialize(this);} }此時(shí)news表就應(yīng)該已經(jīng)創(chuàng)建成功了。
LitePal存儲(chǔ)
LitePal數(shù)據(jù)存儲(chǔ)
總結(jié)
以上是生活随笔為你收集整理的LitePal简单用法的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 序列化 小复习
- 下一篇: cmd使用另一个Oracle的sid,(