本文主要是介绍数据存储——数据库_开源数据库LitePal,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
配置LitePal
1.导入Jar包或者写入源码
module的build.gradle中添加
dependencies {compile 'org.litepal.android:core:1.3.0'
}
2.配置litepal.xml
在app的assets目录下面新建一个litepal.xml文件
<?xml version="1.0" encoding="utf-8"?>
<litepal> <dbname value="demo" ></dbname> //数据库的名字<version value="1" ></version> //数据库的版本号<list> //数据库表<mapping class="org.litepal.litepalsample.model.Album"></mapping> //数据库表结构<mapping class="org.litepal.litepalsample.model.Song"></mapping></list>
</litepal>
3.配置LitePalApplication
在AndroidManifest.xml中配置LitePalApplication
<application...android:name="org.litepal.LitePalApplication" >
</application>
或者,如果已经有MyApplication类,则继承
LitePalApplication即可
public class MyApplication extends LitePalApplication { ...
}
LitePal的建表
1. 根据对象关系映射模式的理念,每一张表都应该对应一个模型(Model),建表先要新建一个模型类,新建一个Model1类,如下:
public class Model1 extends DataSupport {private String destId; //目的地IDprivate String cnName; //中文名private String enName; //英文名private String parentId;private String childrenId;private long updateTime;// 自动生成get、set方法
}
数据类型一共有8种:int、short、long、float、double、boolean、String、Date;
Tips:只有private修饰的字段才会被映射到数据库表中,即如果有某一个字段不想映射的话,就设置为public、protected或者default修饰符就可以了。
2. 把Model配置到映射列表中,即修改assest目录下的litepal.xml文件,在<list>标签中加入类名:
<?xml version="1.0" encoding="utf-8"?>
<litepal> <dbname value="table" ></dbname><version value="1" ></version><list> <mapping class="com.example.litepal.Model1"></mapping> //此处为模型类完整的包名</list>
</litepal>
LitePal的升级表
1. 添加新表
(1) 创建一个新的模型类,然后把它设置到litepal.xml中:
(2) 在<list>标签下加入该新建的模型类,例如是Model2
...
<list> <mapping class="com.example.litepal.Model1"></mapping><mapping class="com.whitelaning.example.litepal.Model2"></mapping>
</list>
...
2. 旧表添加新的一列
例如需要在Model1中添加一列String imagePath(1) 在Model1中添加需要新增的列
public class Model1 extends DataSupport {...private String imagePath; //(新增加的列)// 更新自动生成的get、set方法
}
(2) 在litepal中,把version的值加1,更新版本号
LitePal的存储操作
1. Model1类继承DataSupport(同上),这样该Model1类就可以对数据进行CRUD(增查改删)
2. 存储操作:
Model1 model1 = new Model1();
model1.setDestId("10");
model1.save(); //返回true/false
所以可以
if (model1.save()) { Toast.makeText(context, "存储成功", Toast.LENGTH_SHORT).show();
} else { Toast.makeText(context, "存储失败", Toast.LENGTH_SHORT).show();
}
LitePal的修改操作
修改某一项:
例如:将MODEL1表中的id为4的项的destId改为1
ContentValues values = new ContentValues();
values.put("destId", "1");
DataSupport.update(Model1.class, values, 4);
或者
Model1 model1 = new DEST();
model1.setDestId("1");
model1.update(4);
修改全表:
例如:将MODEL1表所有的destId为1的改为2
ContentValues values = new ContentValues();
values.put("destId", "2");
DataSupport.updateAll(DEST.class, values, "destId = ?", "1");
或者
Model1 model1 = new DEST();
model1.setDestId("1");
model1.updateAll("destId = ?", "1");
LitePal的删除操作
删除某一项:
将MODEL1表中的id为2的项删除:
DataSupport.delete(Model1.class, 2); //??DataSupport.delete(News.class, 2);
将MODEL1表所有的destId为1的项删除:
DataSupport.deleteAll(Model1.class, "destId = ? ", "1");
将MODEL1表所有的数据删除:
DataSupport.deleteAll(Model1.class);
LitePal的查询操作
查询DEST表中id为1的这条记录:
Model1 model1 = DataSupport.find(Model1.class, 1);
获取Model1表中的第一条数据:
Model1 firstModel1Data = DataSupport.findFirst(Model1.class);
获取Model1表中的最后一条数据:
Model1 lastModel1Data = DataSupport.findLast(Model1.class);
获取Model1表中id为1、3、5、7的数据:
List<Model1> list = DataSupport.findAll(Model1.class, 1, 3, 5, 7);
查询所有数据:
List<Model1> list = DataSupport.findAll(Model1.class);
查询Model1表中所有父类id为1的数据:
List<Model1> list = DataSupport.where("parentId = ?", "1").find(Model1.class);
获取Model1表中所有父类id为1的cnName和enName这两列数据:
List<Model1> list = DataSupport.select("cnName", "enName").where("parentId = ?", "1").find(Model1.class);
并对数据按照添加时间倒序排序:
List<Model1> list = DataSupport.select("cnName", "enName").where("parentId = ?", "1").order("updateTime desc").find(Model1.class);
获取前10行数据:
List<Model1> list = DataSupport.select("cnName", "enName").where("parentId = ?", "1").order("updateTime desc").limit(10).find(Model1.class);
想分页展示,若翻页了,可以添加一个偏移量:
List<Model1> list = DataSupport.select("cnName", "enName").where("parentId = ?", "1").order("updateTime desc").limit(10).offset(10).find(Model1.class);
LitePal的聚合函数
统计行数 count()
int result = DataSupport.count(Model1.class);
统计parentId为1的行数
int result = DataSupport.where("parentId = ?", "1").count(Model1.class);
average()
max()
min()
原文:Android开源数据库LitePal
这篇关于数据存储——数据库_开源数据库LitePal的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!