前言
LitePal是郭大神的杰作。
GitHub:https://github.com/LitePalFramework/LitePal
简单使用过程
集成
1)在app中的build.gradle中添加
dependencies {
compile 'org.litepal.android:core:2.0.0'
}
2)在app->main中添加assets,添加litepal.xml文件,内容如下
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<!--数据库名-->
<dbname value="User"></dbname>
<!--数据库版本号,用于更新数据库-->
<version value="1"></version>
<list>
<!--这里是类映射-->
</list>
</litepal>
其中 dbname填写数据库名
version填写数据库版本号
list中添加数据库的实体Bean类
3)创建Application,并继承LitePalApplication,初始化
public class MyApplication extends LitePalApplication {
@Override
public void onCreate() {
super.onCreate();
//初始化
LitePal.initialize(this);
}
}
4)创建Bean User.class 继承DataSupport
public class User extends DataSupport{
private String name;
private String age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
}
5)在litepal.xml中添加映射
litepal.xml更新为:
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<!--数据库名-->
<dbname value="User"></dbname>
<!--数据库版本号,用于更新数据库-->
<version value="1"></version>
<list>
<!--这里是类映射-->
<mapping class="com.wj.litepal.User"></mapping>
</list>
</litepal>
方法
1)增:
/**
* 添加用户
*/
private void addUser() {
//方式一
ContentValues values = new ContentValues();
values.put("name", "WJ");
values.put("age", "18");
long l = LitePal.getDatabase().insert("User", "", values);
Log.v("LitePal Log", "插入成功 : " + l);
//方式二
User user = new User();
user.setName("WJ 2");
user.setAge("20");
//返回是否插入成功的boolean值 不会打印错误日志
boolean save = user.save();
Log.v("LitePal Log", "插入成功 : " + save);
//会打印出出错日志
user.saveThrows();
}
2)删:
/**
* 删除用户
*/
private void deleteUser() {
int delete = DataSupport.delete(User.class, 2);
Log.v("LitePal Log", "删除:" + delete);
}
3)改:
/**
* 更新用户
*/
private void updateUser() {
ContentValues values = new ContentValues();
values.put("name", "WJ Hannah");
DataSupport.update(User.class, values, 2);
}
4)查:
/**
* 查询用户
*/
private void queryUser() {
List<User> all = DataSupport.findAll(User.class);
for (User u : all) {
Log.v("LitePal Log", "查询:" + u.getName());
}
}
方法都运行一遍之后的日志:
06-14 16:34:12.707 23467-23467/? V/LitePal Log: 插入成功 : 1
06-14 16:34:12.710 23467-23467/? V/LitePal Log: 插入成功 : true
06-14 16:34:12.714 23467-23467/? V/LitePal Log: 查询:Name:WJ Age:18
06-14 16:34:12.714 23467-23467/? V/LitePal Log: 查询:Name:WJ 2 Age:20
06-14 16:34:12.714 23467-23467/? V/LitePal Log: *******************************
06-14 16:34:12.717 23467-23467/? V/LitePal Log: 查询:Name:WJ Age:18
06-14 16:34:12.717 23467-23467/? V/LitePal Log: 查询:Name:WJ Hannah Age:20
06-14 16:34:12.717 23467-23467/? V/LitePal Log: *******************************
06-14 16:34:12.720 23467-23467/? V/LitePal Log: 删除:1
06-14 16:34:12.721 23467-23467/? V/LitePal Log: 查询:Name:WJ Age:18
06-14 16:34:12.721 23467-23467/? V/LitePal Log: *******************************
06-14 16:34:12.723 23467-23467/? V/LitePal Log: Count:1
5)聚合函数
LitePal中一共提供了count()、sum()、average()、max()和min()这五种聚合函数
举例:查询数据库表中的所有数据的数量
private void countUser() {
int count = DataSupport.count(User.class);
Log.v("LitePal Log", "Count:" + count);
}
数据库升级(删除Bean字段)
1)修改litepal.xml
<?xml version="1.0" encoding="utf-8"?>
<litepal>
<!--数据库名-->
<dbname value="User"></dbname>
<!--数据库版本号,用于更新数据库-->
<version value="2"></version>
<list>
<!--这里是类映射-->
<mapping class="com.wj.litepal.User"></mapping>
</list>
</litepal>
2)修改User.class 删除age字段
public class User extends DataSupport{
private String name;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
3)修改含有age的字段的方法后,打印日志
06-14 16:35:17.078 23827-23827/com.wj.litepal V/LitePal Log: 插入成功 : 2
06-14 16:35:17.080 23827-23827/com.wj.litepal V/LitePal Log: 插入成功 : true
06-14 16:35:17.084 23827-23827/com.wj.litepal V/LitePal Log: 查询:Name:WJ
06-14 16:35:17.084 23827-23827/com.wj.litepal V/LitePal Log: 查询:Name:WJ 3
06-14 16:35:17.084 23827-23827/com.wj.litepal V/LitePal Log: 查询:Name:WJ 4
06-14 16:35:17.084 23827-23827/com.wj.litepal V/LitePal Log: *******************************
06-14 16:35:17.087 23827-23827/com.wj.litepal V/LitePal Log: 查询:Name:WJ
06-14 16:35:17.087 23827-23827/com.wj.litepal V/LitePal Log: 查询:Name:WJ Hannah
06-14 16:35:17.087 23827-23827/com.wj.litepal V/LitePal Log: 查询:Name:WJ 4
06-14 16:35:17.087 23827-23827/com.wj.litepal V/LitePal Log: *******************************
06-14 16:35:17.088 23827-23827/com.wj.litepal V/LitePal Log: 删除:1
06-14 16:35:17.089 23827-23827/com.wj.litepal V/LitePal Log: 查询:Name:WJ
06-14 16:35:17.089 23827-23827/com.wj.litepal V/LitePal Log: 查询:Name:WJ 4
06-14 16:35:17.089 23827-23827/com.wj.litepal V/LitePal Log: *******************************
06-14 16:35:17.090 23827-23827/com.wj.litepal V/LitePal Log: Count:2
结语
对LitePal的简单使用暂时到这里了。有什么问题和想法欢迎评论。
附:
GitHub:https://github.com/android99wj/MyLitePal
个人微信公众号:摩羯座程序媛的日常 (dreamflower_hannah)