LitePal: Android开源数据库框架(二)

本系列的上一篇已经介绍了Android开源数据库框架LitePal如何引入到工程中并进行少量配置使其就绪。接下来将围绕我们平时对Sqlite的使用来介绍LitePal的具体用法。你会沉醉于它的简介,优雅。

建表

使用Android原生的数据库编程API,我们要创建数据表就必须依赖于SqliteOpenHelper,组装冗长的SQL建表语句,但是在LitePal中建表变得非常简单。
我们只需要创建每张表对应的实体类(model)即可。还是用LitePal的作者使用的歌曲(Song)和Album(专辑)来举例。

public class Song {

    private String name;

    public String getName() {
        return name;
    }

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

    private String name;

    public String getName() {
        return name;
    }

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

很明显,我们创建了两个实体类,并提供了getter、setter方法。那么如何让这两个实体类与LitePal关联,并创建对应的数据表呢?还记得在上一篇中提到的litepal.xml文件吗?OK,马上要用到的就是它:

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

    <dbname value="demo" ></dbname>

    <version value="1" ></version>

    <list>
        <mapping class = "com.oncno.litepaldemo.model.Album"></mapping>
        <mapping class="com.oncno.litepaldemo.model.Song"></mapping>
    </list>
</litepal>

<list></list>标签中加入对应的class作为映射,LitePal就知道该创建哪些数据表了。完成了这些,在你下次有数据库操作的时,数据表就会自动创建好了。比如调用调用数据库对象:

Connector.getDatabase();

此时Song和Album的数据库就会自动创建SQL建表语句,并创建好数据表,Like this:

CREATE TABLE album (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT
);

CREATE TABLE song (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    name TEXT
);

在Demo程序中默认Activity中调用Connector.getDatabase()

public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Connector.getDatabase();
    }

    @Override
    protected void onResume() {
        super.onResume();
        Connector.getDatabase();
    }
    ... ...
}

运行程序,并在adb shell中查看效果:
demo.db
可以看到我们在litepal.xml的demo.db数据库已经创建好了。运行sqlite3 demo.db查看数据库表结构:

//Sqlite中查看数据库中所有的数据表
.table

tables

//Sqlite中查看数据表结构
pragma table_info(TABLE_NAME)

table_info

OK,album和song两个表同样也按照我们配置的那样创建好了,并且像我们在实体类定义的那样,都包含name属性。相比于原生的方式,LitePal明显提供了简洁,优雅的建表操作。

posted @ 2015-07-14 13:15  Taylor & Code  阅读(665)  评论(0编辑  收藏  举报