下面讲述一下 LitePal 数据库的用法。
首先添加一个依赖:
dependencies { ...... compile 'org.litepal.android:core:1.5.1' }然后如下图一样,创建出红框中的目录:
在 litepal.xml 中完成如下配置:
<?xml version="1.0" encoding="utf-8" ?> <litepal> <dbname value="BookStore"></dbname> <!-- 数据库的名字 --> <version value="1"></version> <!-- 数据库的版本号 --> <list> <!-- 配置数据库中相应的表,暂时不写 --> </list> </litepal>最后, 配置LitePalApplication。由于操作数据库时需要用到Context,而我们显然不希望在每个接口中都去传一遍这个参数,那样操作数据库就显得太繁琐了。因此,LitePal使用了一个方法来简化掉Context这个参数,只需要在AndroidManifest.xml中配置一下LitePalApplication,所有的数据库操作就都不用再传Context了,如下所示:
<manifest> <application android:name="org.litepal.LitePalApplication" ... > ... </application> </manifest>有些程序可能会有自己的Application,这时只需要修改一下MyApplication的继承结构,让它不要直接继承Application类,而是继承LitePalApplication类,就可以使用一切都能正常工作了。
那么接下来我们就看一看LitePal中是如何建表的吧。根据对象关系映射模式的理念,每一张表都应该对应一个模型(Model),也就是说,如果我们想要建一张book表,就应该有一个对应的Book模型类。新建一个Book类,如下所示:
public class Book extends DataSupport{ private int id; private String author; private double price; private int pages; private String name; private String press; public int getId() { return id; } public void setId(int id) { this.id = id; } ...... 生成相应的set,get方法。现在模型类已经建好了,我们还差最后一步,就是将它配置到映射列表当中。编辑assets目录下的litepal.xml文件,在标签中加入Book模型类的声明:
<?xml version="1.0" encoding="utf-8" ?> <litepal> <dbname value="BookStore"></dbname> <version value="1"></version> <list> <mapping class="com.everyoo.bean.Book"></mapping><!-- 配置Book模型类,这里是Book 类的路径 --> </list> </litepal>好,目前基本上已经差不多了。调用一下面的方法,book表就应该已经创建成功了。
SQLiteDatabase db = Connector.getDatabase();个人测试发现,该方法最好放在子线程中去执行。因为当我在UI线程中执行时,发现会报类似于这样的信息‘在主线程做了太对的工作’。而且感觉我的UI操作,有不到1s的卡顿情况。
关于数据库的升级处理,LitePal框架做的还是比较好的。
细心的人会发现,以上的操作,都是在一个数据库中的。自 LitePal 的1.4.0版本之后,才支持创建多个数据库的功能。
参考博客:
郭林的博客: http://blog.csdn.net/sinyu890807/article/category/2522725
框架git地址
