1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > Android数据库SQLite操作详解及LitePal用法详解(三)

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

时间:2019-05-24 14:35:51

相关推荐

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

LitePal开源项目地址:/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文件夹下,内容为

<?xml version="1.0" encoding="utf-8"?><litepal><!--定义数据库的名称,需要以.db作为文件后缀,如果没有.db,将会默认添加--><dbname value="demo" ></dbname><!--定义数据库的版本号--><version value="1" ></version><!--定义所有的映射模型,LitePal会对每一个表创建映射类例如<list><mapping class="com.test.model.Reader"></mapping><mapping class="com.test.model.Magazine"></mapping></list>--><list></list></litepal>

配置LitePalApplication

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

<manifest><applicationandroid:name="org.litepal.LitePalApplication"...>...</application></manifest>

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

<manifest><applicationandroid:name="com.example.MyOwnApplication"...>...</application></manifest>

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

public class MyOwnApplication extends Application {@Overridepublic 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 /3/9.* 邮箱:haowei0708@* 描述:*/public class Album extends DataSupport {@Column(unique = true, defaultValue = "unknown")private String name;private float price;private byte[] cover;private List<Song> songs = new ArrayList<Song>();}

package com.example.kevin.learnsqlite.model;import org.litepal.annotation.Column;import org.litepal.crud.DataSupport;/*** 作者:Created by Kevin on /3/9.* 邮箱:haowei0708@* 描述:*/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();

导出后看到数据库已经创建成功,这就是对象关系映射(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<Song> songs = new ArrayList<Song>();}然后将litepal.xml文件中的版本号改为2即可。

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

接下来继续学习使用LitePal进行数据库的操作

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。