开源库LitePal的用法

前言


   LitePal是一个开源的Android库,允许开发人员使用SQLite数据库非常容易。您可以完成大多数数据库操作,甚至不需要编写SQL语句,包括创建或升级表,压缩操作,聚合函数等。LitePal的设置也很简单,您可以将它集成到您的项目中少于5分钟。

内容


LitePal的快速配置

1.引入Jar包或源码

   使用Android Studio在项目的build.gradle中添加下面依赖:

1
2
3
4
dependencies {
compile 'org.litepal.android:core:1.3.2'
}

   使用Eclipse到这里下载好了jar包之后,把它复制到项目的libs目录中就算是引入成功了。

2.配置litepal.xml

   在项目的assets目录下面新建一个litepal.xml文件,内容如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<dbname value="cool_weather" />
<version value="1" />
<list>
<mapping class="com.example.yuxuehai.coolweather.bean.Province" />
<mapping class="com.example.yuxuehai.coolweather.bean.City" />
<mapping class="com.example.yuxuehai.coolweather.bean.County" />
</list>
</litepal>

   其中:

  • 是数据库的名字
  • 是数据库的版本号
  • 是数据库的映射模型(数据库表)
  • 是数据库的映射模型的地址(数据库表结构)

3. 配置LitePalApplication

   在AndroidManifest.xml中配置LitePalApplication,如下:

1
2
3
4
5
6
7
<application
android:name="org.litepal.LitePalApplication"
...
>
...
...
</application>

   如果是已经有自己的application,则可以继承LitePalApplication或者在代码中加入如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
public class MyApplication extends LitePalApplication {
...
}
public class MyApplication extends AnotherApplication{
@Override
public void onCreate() {
super.onCreate();
LitePal.initialize(this);
}
...
}

LitePal的建表

   根据对象关系映射模式的理念,每一张表都应该对应一个模型(Model),建表先要新建一个模型类,新建一个Province类,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
public class Province extends DataSupport {
private int id;
private String provinceName;
private int provinceCode;
public int getProvinceCode() {
return provinceCode;
}
public void setProvinceCode(int provinceCode) {
this.provinceCode = provinceCode;
}
public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getProvinceName() {
return provinceName;
}
public void setProvinceName(String provinceName) {
this.provinceName = provinceName;
}
}

   LitePal的映射规则是非常轻量级的,不像一些其它的数据库框架,需要为每个模型类单独配置一个映射关系的XML,LitePal的所有映射都是自动完成的。根据LitePal的数据类型支持,可以进行对象关系映射的数据类型一共有8种,int、short、long、float、double、boolean、String和Date。只要是声明成这8种数据类型的字段都会被自动映射到数据库表中,并不需要进行任何额外的配置。

注意:只有private修饰的字段才会被映射到数据库表中,即如果有某一个字段不想映射的话,就设置为public、protected或者default修饰符就可以了。

   建立好Model后,我们就把他配置到映射列表中,即编辑assest目录下的litepal.xml文件,在标签中加入DEST类的声明,这里要注意,要类的完整类名。

1
2
3
4
5
6
7
8
9
10
11
12
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<dbname value="cool_weather" />
<version value="1" />
<list>
<mapping class="com.example.yuxuehai.coolweather.bean.Province" />
</list>
</litepal>

   到这里,就完成了LitePal数据库的配置。

LitePal的升级表

1.添加新表

   首先创建一个新的模型类,然后把它设置到litepal.xml中,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<dbname value="cool_weather" />
<version value="1" />
<list>
<mapping class="com.example.yuxuehai.coolweather.bean.Province" />
<mapping class="com.example.yuxuehai.coolweather.bean.City" />
<mapping class="com.example.yuxuehai.coolweather.bean.County" />
</list>
</litepal>

   然后,把litepal.xml中的version的值加一即可,如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<dbname value="cool_weather" />
<version value="2" />
<list>
<mapping class="com.example.yuxuehai.coolweather.bean.Province" />
<mapping class="com.example.yuxuehai.coolweather.bean.City" />
<mapping class="com.example.yuxuehai.coolweather.bean.County" />
</list>
</litepal>

2.旧表添加新列

   首先在需要升级的模型类中添加新的private修饰的字段,然后再把litepal.xml中的version的值加一即可,这里就不展示代码了,读者可以自己去体验。

LitePal的操作

   LitePal要存储数据,首先模型类要继承DataSupport,即:

1
2
3
4
public class Province extends DataSupport {
...
...
}

   继承了DataSupport类之后,这些实体类就拥有了进行CRUD操作的能力。

1.存储操作

   创建对象,为对象的属性进行赋值,最后调用save()方法即可存储,如下:

1
2
3
4
Province province = new Province();
province.setProvinceName(provinceObject.getString("name"));
province.setProvinceCode(provinceObject.getInt("id"));
province.save();

   更好的是,save()方法是有返回值的,读者可以根据自己需要对其进行判断后做出一些操作:

1
2
3
4
5
if (mDest.save()) {
Toast.makeText(context, "存储成功", Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(context, "存储失败", Toast.LENGTH_SHORT).show();
}

2.修改操作

   如果想把Province表中id为1的provinceCode改为”1”,可以这样写:

1
2
3
4
5
6
7
8
9
ContentValues values = new ContentValues();
values.put("provinceCode", "1");
DataSupport.update(Pronvice.class, values, 1);
//或者用下面这种方法
Province updateNews = new Province();
updateNews.setProvinceCode(1)
updateNews.update(1);

   如果想把Province表中所有id为”1”的改为”2”可以这样写:

1
2
3
4
5
6
7
8
9
ContentValues values = new ContentValues();
values.put("provinceCode", "2");
DataSupport.updateAll(DEST.class, values, "provinceCode = ?", "1");
//或者用下面这种方法
Province updateNews = new Province();
updateNews.setProvinceCode("2");
updateNews.updateAll("setProvinceCode = ?", "1");

3.LitePal的删除操作

   比如说我们想删除Province表中id为2的记录,就可以这样写:

1
DataSupport.delete(Province.class, 2);

   想把Province表中id为“1”的所有数据删除,就可以这样写:

1
DataSupport.deleteAll(Province.class, "destId = ? ", "1");

   想把Province表中所有数据删除,就可以这样写:

1
DataSupport.deleteAll(Province.class);

LitePal的查询操作

   查询Province表中id为1的这条记录,使用LitePal就可以这样写:

1
Province mProvince = DataSupport.find(Province.class, 1);

   想要获取Province表中的第一条数据,只需要这样写:

1
Province mProvince = DataSupport.findFirst(Province.class);

   想要获取Province表中的最后一条数据,只需要这样写:

1
Province mProvince = DataSupport.findLast(Province.class);

   查询Province表中id为1,2,3的这条记录,使用LitePal就可以这样写:

1
List<Province> mProvince = DataSupport.findAll(Province.class,1,2,3);

   查询所有数据,只需要这样写:

1
List<Province> mProvince = DataSupport.findAll(Province.class);

   笔者只是对一些简单的操作进行介绍,如想学习更多操作请浏览guolin郭霖老师的博客点这里


版权声明:本文为博主原创文章,转载请注明出处KidSea

小额赞助,鼓励作者写出更好的文章