Android 数据持久化(一)之LitePal
1. 简介
LitePal是一个数据库开源框架,采用的是对象关系映射模型(ORM)的模式,这个比较方便在Android数据库方面的开发,它把数据库的功能封装了起来,不用写SQL语句就可以完成建表和增删改的操作。
关于这个数据库开源框架它的源代码和相应的用法都已经在Github上公布了,https://github.com/LitePalFramework/LitePal 这个就是链接地址,上面也给出了很详细的用法说明,相比较之前Android给出的三种数据持久化的方法简单了很多,虽然github上介绍的很详细了,但这里自己还是做了一个很小的总结,这个方便好用也没有太多的内容,尤其是如果了解SQL语句的话,就会更好理解。
2.LitePal配置
项目的build.gradle文件下的dependencies闭包中添加compile 'org.litepal.android:core:1.3.2'
来添加这个开源库。
AndroidManifest.xml文件中添加
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:name="org.litepal.LitePalApplication"
android:theme="@style/AppTheme">
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
添加litepal.xml文件,在/src/main/ 创建一个assets目录,其下创建litepal.xml文件
3.LitePal数据操作
3.1创建数据
LitePal采用的是对象关系映射(ORM)的模式,是将面向对象的语言和面向关系的数据库两者建立的这种映射关系。
所以在创建数据库前,先要定义一个类用来创建表,如定义Book类 这个类的定义其实就是典型的Java Bean。这个新建的模型类如要进行CRUD(增删改查)操作,就要继承DataSupport类代码如下:
public class Book extends DataSupport{
private int id;
private String author;
private double price;
private int pages;
private String name;
// generated getters and setters.
...
}
要将这个Book类添加到映射模型litepal.xml中,要使用完整的类名(路径)如下:
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<dbname value="Bookstore" ></dbname>
<version value="2"></version>
<list>
<!--模型类映射表-->
<mapping class="com.example.litepaltest.Book" ></mapping>
…
</list>
</litepal>
3.2添加数据
这个也是插入数据的一种方式setXXX()
Book book = new Book();
book.setName("aaa");//添加数据
book.setAuthor("jack");
book.setPages(111);
book.setPrice(122);
book.save();//保存添加的数据
book.setPrice(222);
book.save();//此时是直接更新当前对象的数据
3.3更新数据
book.setPrice(333);
//更新name=aaa,author=jack 记录的数据
book.updateAll("name = ? and author = ?", "aaa", "jack");
3.4删除数据
DataSupport.deleteAll(Book.class, "price < ?", "122");//删除price<122的记录,不加约束条件就是删除所有数据
3.5查询数据
下面的使用的很清晰的写到这个查询的约束条件
List<Book> bookList = DataSupport.select("name", "author", "pages")
.where("pages > ?", "50")
.order("pages")
.limit(10)
.offset(10)
.find(Book.class);
for (Book books : bookList) {
Log.d("MainActiity", "book name is " + books.getName());
Log.d("MainActiity", "book author is " + books.getAuthor());
Log.d("MainActiity", "book pages is " + books.getPages());
Log.d("MainActiity", "book price is " + books.getPrice());
}
上面是对LitePal的简单的介绍,但还是用到关系数据库的一些知识,这个开源框架帮我们简化了这个开发的过程。