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中查看效果:
可以看到我们在litepal.xml的demo.db数据库已经创建好了。运行sqlite3 demo.db
查看数据库表结构:
//Sqlite中查看数据库中所有的数据表
.table
//Sqlite中查看数据表结构
pragma table_info(TABLE_NAME)
OK,album和song两个表同样也按照我们配置的那样创建好了,并且像我们在实体类定义的那样,都包含name属性。相比于原生的方式,LitePal明显提供了简洁,优雅的建表操作。