Android数据库SQLite操作详解及LitePal用法详解(三)

LitePal开源项目地址:https://github.com/LitePalFramework/LitePal
1. 什么是LitePal:

百度百科这么说的,LitePal是一款开源的Android数据库框架,采用了对象关系映射(ORM)的模式,将平时开发时最常用的一些数据库功能进行了封装,使得开发者不用编写一行SQL语句就可以完成各种建表、増删改查的操作。并且LitePal很“轻”,jar包大小不到100k,而且近乎零配置,这一点和Hibernate这类的框架有很大区别。目前LitePal的源码已经托管到了GitHub上。

2. 配置LitePal

配置LitePal虽然稍微麻烦了点,但是这是一本万利的买卖,配置成功,就可以体检极其便利的数据库操作。

  • 首先引入jar包

LitePal的Github地址在这里下载jar包引入项目中

编辑gradle.build文件,添加以下代码

dependencies {
    compile 'org.litepal.android:core:1.3.1'
}
  • 在项目的assets文件下创建一个litepal.xml,放在main文件夹下,内容为

<litepal>
    
    <dbname value="demo" >dbname>

    
    <version value="1" >version>

    
    <list>
    list>
litepal>
  • 配置LitePalApplication
    你肯定不想总是传入Context对象,所以我们要配置Application,这也是一个一劳永逸的办法。在清单文件中进行配置

    "org.litepal.LitePalApplication"
        ...
    >
    ...
    

但是一般的项目我们一般已经配置过Application来获取全局对象了,例如:


    "com.example.MyOwnApplication"
        ...
    >
    ...
    

不要心慌,不要着急,而且还有有些程序可能会遇到一些更加极端的情况,比如说MyApplication需要继承另外一个AnotherApplication,并且这个AnotherApplication还是在jar包当中的,不能修改它的代码。这种情况应该算是比较少见了,但是如果你遇到了的话也不用急,我们可以调用LitePalApplication.initialize(context) 方法即可

public class MyOwnApplication extends Application {

    @Override
    public void onCreate() {
        super.onCreate();
        LitePalApplication.initialize(this);
    }
    ...
}

3. 开始使用LitePal

  • 创建表
    前面我们提到一个很重要的概念,对象关系映射(ORM)的模式,这个到底是个什么玩意儿?
    引用郭神的话:我们为什么要使用对象关系映射模式呢?这主要是因为大多数的程序员都很擅长面向对象编程,但其中只有少部分的人才比较精通关系型数据库。而且数据库的SQL语言晦涩难懂,就算你很精通它,恐怕也不喜欢经常在代码中去写它吧?而对象关系映射模式则很好地解决了这个问题,它允许我们使用面向对象的方式来操作数据库,从而可以从晦涩难懂的SQL语言中解脱出来。
    那么接下来我们就看一看LitePal中是如何建表的吧。根据对象关系映射模式的理念,每一张表都应该对应一个模型(Model)。

我们来建立两个表,一个Album一个Song,get和set方法自己添加即可,主要用于后面的数据的操作

package com.example.kevin.learnsqlite.model;

import org.litepal.annotation.Column;
import org.litepal.crud.DataSupport;

import java.util.ArrayList;
import java.util.List;

/**
 * 作者:Created by Kevin on 2016/3/9.
 * 邮箱:[email protected]
 * 描述:
 */
public class Album extends DataSupport {

        @Column(unique = true, defaultValue = "unknown")
        private String name;

        private float price;

        private byte[] cover;

        private List songs = new ArrayList();


}
package com.example.kevin.learnsqlite.model;

import org.litepal.annotation.Column;
import org.litepal.crud.DataSupport;

/**
 * 作者:Created by Kevin on 2016/3/9.
 * 邮箱:[email protected]
 * 描述:
 */
public class Song extends DataSupport {

    @Column(nullable = false)
    private String name;

    private int duration;

    @Column(ignore = true)
    private String uselessField;

    private Album album;

}

最后一步,就是将它配置到映射列表当中。编辑assets目录下的litepal.xml文件,在标签中加入Album和Song模型类的声明:(记得修改为自己的包名)

<list>
        <mapping class="com.example.kevin.learnsqlite.model.Album">mapping>
        <mapping class="com.example.kevin.learnsqlite.model.Song">mapping>
    list>

所有工作做完,只需要在获取SQLiteDatabase的实例即可,SQLiteDatabase db = Connector.getDatabase();

Android数据库SQLite操作详解及LitePal用法详解(三)_第1张图片

导出后看到数据库已经创建成功,这就是对象关系映射(ORM),是不是很直观。

  • 升级表
    说完创建表,再来看看使用LitePal升级表是如何方便我们进行升级的,看了Android数据库SQLite操作详解及LitePal用法详解(一)的童鞋应该知道需要在SQLiteOpenHelper中的onUpdate方法中进行升级,但是还得需要顾虑之前所创建的表,现在使用LitePal就没有这方面的担忧了,来看看是如何使用的:
    我们给Album增加一行数据,private Date releaseDate;
public class Album extends DataSupport {

        @Column(unique = true, defaultValue = "unknown")
        private String name;

        private float price;

        private Date releaseDate;

        private byte[] cover;

        private List songs = new ArrayList();
}

然后将litepal.xml文件中的版本号改为2即可。

Android数据库SQLite操作详解及LitePal用法详解(四)
接下来继续学习使用LitePal进行数据库的操作

你可能感兴趣的:(Android进阶)