LitePal 是一款开源的 Android 数据库框架,它采用了对象关系映射(ORM)的模式,将我们平时使用的一些数据库(比如 Sqlite)功能进行了封装。
gradle注入:
implementation 'org.litepal.android:core:1.6.1'
这里我的版本是1.6.1的,如果想获得最新版本,请看这里:https://github.com/LitePalFramework/LitePal
接着需要配置 litepal.xml 文件,在 app/src/main 目录右键 -> New -> Directory , 创建一个 assets 目录,在该目录下新建一个 litepal.xml 文件,编辑内容如下:
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<dbname value="person" ></dbname>
<version value="1" ></version>
<list>
<mapping class="com.example.a10212.litepalapp.Person"></mapping>
</list>
</litepal>
说明: 用于设定数据库的名字,用于设定数据库的版本号,用于设定所有的映射模型
由于操作数据库时需要用到Context,而我们显然不希望在每个接口中都去传一遍这个参数,那样操作数据库就显得太繁琐了。因此,LitePal使用了一个方法来简化掉Context这个参数,只需要在AndroidManifest.xml中配置一下LitePalApplication,所有的数据库操作就都不用再传Context了。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.a10212.litepalapp">
<application
android:name="org.litepal.LitePalApplication"
·········
</application>
</manifest>
如果已经有了Application,需要改变一下Application的继承结构。继承LitePalApplication。但是,有些程序可能会遇到一些更加极端的情况,比如说MyApplication需要继承另外一个AnotherApplication,并且这个AnotherApplication还是在jar包当中的,不能修改它的代码。这种情况应该算是比较少见了,但是如果你遇到了的话也不用急,仍然是有解释方案的。你可以把LitePal的源码下载下来,然后把src目录下的所有代码直接拷贝到你项目的src目录下面,接着打开LitePalApplication类,将它的继承结构改成继承自AnotherApplication,再让MyApplication继承自LitePalApplication,这样所有的Application就都可以在一起正常工作了。
以上配置就完成了。
根据对象关系映射模式的理念,每一张表都应该对应一个模型(Model),也就是说,如果我们想要建一张news表,就应该有一个对应的News模型类。新建一个User类,表中的每一列其实就是对应了模型类中的一个字段,比如表中有id、name、age、gender 类中就也应该有这几个字段。id作为主键
package com.example.a10212.litepalapp;
import org.litepal.crud.DataSupport;
public class Person extends DataSupport{
String name;
int age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
LitePal的映射规则是非常轻量级的,不像一些其它的数据库框架,需要为每个模型类单独配置一个映射关系的XML,LitePal的所有映射都是自动完成的。根据LitePal的数据类型支持,可以进行对象关系映射的数据类型一共有8种,int、short、long、float、double、boolean、String和Date。只要是声明成这8种数据类型的字段都会被自动映射到数据库表中,并不需要进行任何额外的配置。
现在只要对数据库有任何操作,user表就会自动被创建。比如获取SQLiteDatabase示例。
List<Person> persons=DataSupport.findAll(Person.class);