写给初学者26_android_数据持久化_LitePal_更简单的数据库操作
来源:互联网 发布:网页小游戏源码 编辑:程序博客网 时间:2024/06/05 06:15
安卓26_数据持久化-SQLite第三方开源库
实际上SQLiteDataBase当中提供的诸多方法是容易让人头大的,很多又经验的开发者会对其做一次封装,并且开源化。这确实会对开发带来不小的提速,但是还是建议充分理解最基本的东西以后再来接触第三方开源库。关于数据库的第三方开源库常见的有OrmLite、LitePal等。这里介绍LitePal
LitePal
如果你的英语能力不错,那么建议直接去LitePal的开源库地址上参看。地址:https://github.com/LitePalFramework/LitePal
这是一个非常好用的第三方数据库封装库,能够给前期数据库知识不扎实的开发者减轻不少的压力。
1.添加依赖
使用Studio做开发,这一点是几乎逃避不了的。如果是Eclipse那么下载jar包并且导入就好了。
dependencies {compile 'org.litepal.android:core:1.5.1'}
2.配置一个litepal.xml
首先需要assets文件夹下,新建一个litepal.xml文件,然后复制下面的代码进去。
<?xml version="1.0" encoding="utf-8"?><litepal><!-- 定义应用程序的数据库名称。 默认情况下,每个数据库名称应以.db结尾。 如果您没有使用.db命名数据库, LitePal会为您自动加上后缀。 --><dbname value="litePalDemo" /><!-- 定义数据库的版本。 每次你想要 要升级您的数据库,版本标签将有所帮助。 修改您在映射标记中定义的模型,只需修改 使版本值加一,升级数据库 将自动处理,不用担心。 --><version value="1" /><!-- 在列表中使用映射标签定义您的模型,LitePal将会 为每个映射类创建表。 支持的字段 模型中定义的将被映射成列。 --><list></list><!-- 定义.db文件应该在哪里。 “internal”表示.db文件 将存储在数据库文件夹的内部存储器中 一个可以访问。 “external”表示.db文件将被存储在路径到主外部存储设备上的目录, 该应用程序可以放置它拥有哪些所有人的持久文件可以访问。 “内部”将作为默认值。 <storage value="external" /> --></litepal>
这里需要注意的是第一点,关于对AS不太熟悉的小伙伴,可能对Assets文件的创建有些迷惑。
另外创建xml文件的时候,会发现文件跑到了res文件下面去了。这里直接选择创建file就好了,不然AS会默认将你创建的文件放到res下面去。当然关于为什么需要这样,初学的同志们暂时不用知道,当你以后做一些混合开发的时候会了解到的。
这个xml文件的用处很明确
- dbname配置项目的数据库名称。
- 版本配置数据库的版本。 每次你想升级数据库,加上这里的值。
- 列表配置映射类。
- 存储配置应存储数据库文件的位置。 内部和外部是唯一有效的选项。
3.清单文件添加内容
这我们进行很多操作的时候,都需要传递Context作为参数,这是很烦躁的一件事情,LitePal也帮我们解决掉了这个事情。只需要向像下面这么做。
<manifest> <application android:name="org.litepal.LitePalApplication" ... > ... </application></manifest>
添加一句话到application标签中,如果自己有Application了那么清单文件中肯定是注册的自己的,不过可以选择继承,或者不要忘记初始化。
public class MyOwnApplication extends AnotherApplication {
@Overridepublic void onCreate() { super.onCreate(); // 初始化 LitePal.initialize(this);}...}
上面都是一些基本的配置操作,做好了基本的配置操作后就可以开始去使用了。
创建表
1.直接一个java类,并且继承DataSupport
public class Student extends DataSupport {// 继承自DataSupportprivate int age;private float height;@Column(unique = true, defaultValue = "unKnow")// 唯一和默认值为unKnowprivate String name;@Column(ignore = true)// 忽略private String other;public int getAge() { return age;}public void setAge(int age) { this.age = age;}public float getHeight() { return height;}public void setHeight(float height) { this.height = height;}public String getName() { return name;}public void setName(String name) { this.name = name;}public String getOther() { return other;}public void setOther(String other) { this.other = other;}}
将该类的完整类名添加到litePal.xml中的List标签中去。
<list> <mapping class = 完整包名.Student"></mapping></list>
如果这个时候你再回想SQLiteDataBase,应该就会很舒服了,SQLiteDataBase繁琐的数据库语句,和参数列表居多的方法得到解决了。
我们没有添加id列,但是LitePal依旧为我们以id作为了主键,并且@Column(ignore = true)注解后,info并没有创建到表列中来。
更新表
如果你还记得SQLiteDataBase的更新表操作,那么真的而是太痛苦了,我们不但要更改Version来激活onUpgrade,还得注意表的相关操作。十分的不便。使用LitePal将会方便很多。
1.如果是新建表,创建一个新的类,更改一下数据库版本就好。
2.如果对原有表进行一个的修改,那么修改后,更改一下数据库版本就好。
<version value="修改" ></version>
简单粗暴
数据库基本操作-增加
Student student = new Student(); student.setAge(10); // .... student.save();
简单的异常,save方法来源于DataSupport。免去了繁琐的数据库语句、
数据库的基本操作-修改
最常用的方法
就像普通逻辑一样,删除,修改,都离不了查询的操作
Student studentToUpdate = DataSupport.find(Student.class, 1);studentToUpdate.setAge(19); // 修改 studentToUpdate.save();// 保存
还提供了
- findFirst
- findLast
- findAll
- findBySQL
也可以
int id = 10;Student studentToUpdate = new Student();studentToUpdate.setAge(19); // 修改 studentToUpdate.update(id);// 更新到id为10
还可以
Student studentToUpdate = new Student();studentToUpdate.setAge(19); // 修改 studentToUpdate.updateAll("name = ?","xxx");
数据库的基本操作-删除
DataSupport.delete(Student.class,10);// 删除id为10的DataSupport.deleteAll(Student.clas,"age > ?",19);//删除年纪大于19的
数据库的基本操作-查询
主要是查询所有和模糊查询
List<Student> studentList = DataSupport.findAll(Student.class);// 有重载的方法,可以根据id来查询// 条件查询 并且以名字排序List<Student> studentList = DataSupport.where("name like ?", "song%").order("age").find(Student.class);
基本操作就是这样,十分强大的一个三方库
- 写给初学者26_android_数据持久化_LitePal_更简单的数据库操作
- 写给初学者23_android_数据持久化_文件
- 写给初学者25_android_数据持久化_slqlite
- 写给初学者24_android_数据持久化_共享参数_SharedPreferences
- 写给初学者02_android_常用工具
- 写给初学者04_android_安卓的视图
- 写给初学者08_android_一些常用的控件
- 写给初学者15_android_基本的用户交互-点击响应
- 写给初学者01_android_什么是安卓
- 写给初学者03_android_第一个安卓程序
- 写给初学者03_android_第一个安卓程序
- 写给初学者14_android_界面代码优化
- 写给初学者16_android_常用控件_ListView
- 写给初学者17_Android_四大组件-Activity
- 写给初学者18_android_四大组件_Service
- 写给初学者20_android_四大组件_BroadCastReciver
- 写给初学者22_android_百分比布局
- 写给初学者13_android_屏幕适配的前提-基本单位概念
- ZOJ 3494 BCD Code(数位dp+AC自动机)
- python使用selenium调用edge浏览器webdriver
- 【MySQL-性能优化】--MySQL外键约束简述
- bzoj 3709: [PA2014]Bohater 贪心
- 基于tp5文件上传到七牛云的插件
- 写给初学者26_android_数据持久化_LitePal_更简单的数据库操作
- JavaSE学习之IO流使用技巧
- Bone Collector hdu2602(经典dp)01背包
- 用socket实现客户端与服务器端的通信,要求在客户发送数据后能够回显相同的数据。
- 猴子分桃
- 初识注解
- <1>TCP带宽测试试验
- linux中怎么解压.tgz与.tar.gz文件
- JZOJ 4.22 2132——【2017.4.21普及】架设电话线