您的位置:首页 > 移动开发 > Android开发

LitePal的使用

2017-05-29 16:42 155 查看
LitePal 是一个开源的Android数据库框架,采用ORM的模式(将面向对象的语言和面向关系的数据库之间建立的一种映射关系)。

LitePal的使用文档地址是:https://github.com/LitePalFramework/LitePal

一:配置LitePal

1.在build.gradle中加入LitePal的引用:即(compile ‘org.litepal.android:core:1.5.1’)

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})
compile 'com.android.support:appcompat-v7:25.2.0'
testCompile 'junit:junit:4.12'
compile 'org.litepal.android:core:1.5.1'
}


注意加入了加黑部分,1.5.1是版本号,最新的版本号可以在LitePal的主页上看。

2.配置litepal.xml文件。

在src下新建文件夹,命名为assets(这个目录防止资源文件,不会自动生成id,也不会自动占用空间),并创建一个litepal.xml文件,内容为:

<?xml version="1.0" encoding="utf-8"?>
<litepal>
<!--数据库名   -->
<dbname value="BookStore" />
<!--数据库版本号   -->
<version value="2" />
<!--数据库中的对象的映射类型 -->
<list>
</list>
</litepal>


3.在AndroidManifest.xml文件中稍作修改:(加入 android:name=”org.litepal.LitePalApplication



<application
android:name="org.litepal.LitePalApplication
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
...

</application>


这样,LitePal就配置好了可以使用了。

二 LitePal创建数据库

1.首先创建一个Book类,一定要继承DataSupport类:

public class Book extends DataSupport{

private int id;
private String name;
private String author;
private double price;
private int page;
public int getId() {
return id;
}

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

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getPage() {
return page;
}

public void setPage(int page) {
this.page = page;
}

public String getAuthor() {
return author;
}

public void setAuthor(String author) {
this.author = author;
}

public double getPrice() {
return price;
}

public void setPrice(double price) {
this.price = price;
}
}


2.将Book类添加到映射模型列表中,修改litepal.xml如下:

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

<dbname value="BookStore" />

<version value="1" />

<list>
<mapping class="com.skylight.litepaltest.Book"/>
</list>

</litepal>


3.数据库的创建只需调用一句代码即可:

LitePal.getDatabase();


如果想要修改数据表,或添加表,直接在定义的类中修改,改好后把版本号添加1即可:

如:把Book表添加一个属性press,

public class Book extends DataSupport{

private int id;
private String name;
private String author;
private double price;
private int page;

private String press;

public int getId() {
return id;
}

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

public String getName() {
return name;
}

public void setName(String name) {
this.name = name;
}

public int getPage() {
return page;
}

public void setPage(int page) {
this.page = page;
}

public String getAuthor() {
return author;
}

public void setAuthor(String author) {
this.author = author;
}

public double getPrice() {
return price;
}

public void setPrice(double price) {
this.price = price;
}

public String getPress() {
return press;
}

public void setPress(String press) {
this.press = press;
}
}


然后修改版本号:

<version value="2" />


三 LitePal添加数据

直接给对象赋值,然后调用.save()方法。

如:

Book book=new Book();
book.setName("The Da Vinci Code");
book.setAuthor("Dan Brown");
book.setPage(454);
book.setPrice(16.96);
book.save();


这样即向数据库中添加了一条数据

四.LitePal更新数据

法一:

Book book1=new Book();
book1.setName("The Lost Symbol");
book1.setAuthor("Dan Brown");
book1.setPage(510);
book1.setPrice(19.95);
book1.setPress("Unknow");
book1.save();
book1.setPrice(10.99);
book1.save();


法二:

Book book2=new Book();
book2.setPrice(14.95);
book2.setPress("Anchor");
book2.updateAll("name = ? and author = ?","The Lost Symbol","Dan Brown");


法三,把数据更新为默认值:

Book book=new Book();<
b660
/span>
book.setToDefault("page");
book.updateAll();


这样即把所有书的页数都更新为0。

五 LitePal删除数据

DataSupport.deleteAll(Book.class,"price < ?","15");


六 LitePal查询数据

List<Book> books=DataSupport.findAll(Book.class);
for(Book book:books){
Log.i(book.getName()+"**"+book.getAuthor()+"**"+book.getPrice()+"**"+book.getPage());
}


其他查询语句:

1.查询第一条或最后一条数据:

//查询第一条数据
Book book=DataSupport.findFirst(Book.class);
//查询最后一条数据
Book book1=DataSupport.findLast(Book.class);


2.连缀查询定制更多功能的查询

//select()方法指定查询,如:仅查询书名和作者这两列
List<Book> books=DataSupport.select("name","author").find(Book.class);

//where()方法指定查询条件,如:查询页数小于400的
List<Book> books1=DataSupport.where("page < ?","400").find(Book.class);

//order()方法指定排序的结果,默认asc 升序排列
List<Book> books2=DataSupport.order("price desc").find(Book.class);

//limit()方法指定查询结果的数量,如:只查表中的前3条数据
List<Book> books3=DataSupport.limit(3).find(Book.class);

//offset()方法指定查询结果的偏移量,如查询表中的第2,3,4,条数据
List<Book> books4=DataSupport.limit(3).offset(1).find(Book.class);

//任意组合的连缀
List<Book> books5=DataSupport.select("name","author","page")
.where("page > ?","400")
.order("page desc")
.limit(10)
.offset(10)
.find(Book.class);


当然,LitePal还支持使用原生的SQL来进行查询,调用DataSupport.findBySQL()方法。

以上即介绍了LitePal的简单用法,相比较SQLite数据库,简化了代码的书写,很好用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息