常用的数据库框架
Android的发展的速度是难以置信的,Android出来哪一年我还在小学上学很,还能很清楚的记得,那年一切,但是那个时候的我怎么可能也不会想到自己将来会要去做Android.Android数据库的框架很多,选择自己喜欢的,不用掌握很多,选择自己喜欢的就好.

Sugar&GreenDao&Afinal&ORMLite&Realm&LiteOrm&DBFlow&ActiveAndroid&LitePal

SugarORM 是对象关系映射模式。不用写复杂的sql语句,而用简单的API即可完成创建和操纵数据;可以在原有的Bean上仅仅添加小的修改而复用Bean;简化而明了的数据库设计和创建过程,同时提供表的一对多的支持。

GreenDao 是为Android设计的对象关系映射(ORM)工具。它提供了对象到关系型数据库SQLite的相应接口。为了在Android工程中使用greenDao,需要创建另一个“生成器”工程,它的任务是在你的工程域里生成具体的代码。因此相比与其它ORM框架具有出众性能。

Afinal 是一个android的sqlite orm 和 ioc 框架。同时封装了android中的http框架,使其更加简单易用。FinalDB模块,android中的orm框架,一行代码就可以进行增删改查。支持一对多,多对一等查询。

ORMLite (Object Relational Mapping Lite)提供了一些轻量级持久化Java对象到SQL数据库,同时也避免了复杂性和更多的标准的ORM包的开销功能。它支持的SQL数据库使用JDBC的数量,还支持原生的Android操作系统数据库API调用sqlite。

Realm 是用来替代sqlite的一种解决方案,它有一套自己的数据库存储引擎,比sqlite更轻量级,拥有更快的速度,并且具有很多现代数据库的特性,比如支持JSON,流式api,数据变更通知,自动数据同步,简单身份验证,访问控制,事件处理,最重要的是跨平台,目前已有Java,Objective C,Swift,React-Native,Xamarin这五种实现。

LiteOrm 是android上的一款数据库(ORM)框架库。速度快、体积小、性能高。开发者基本一行代码实现数据库的增删改查操作,以及实体关系的持久化和自动映射。设计原则:轻量、专注、性能优先、线程无关,专注数据及其关系存储和操作;无需工具辅助,不需要无参构造,不需要繁多注解,约定优于配置;使用极致简约,例如:db.save(u); db.query(U.class); db.deleteAll(U.class);。

DBFlow 综合了 ActiveAndroid, Schematic, Ollie,Sprinkles 等库的优点。同时不是基于反射,所以性能也是非常高,效率紧跟greenDAO其后。基于注解,使用apt技术,在编译过程中生成操作类,使用方式和ActiveAndroid高度相似,使用简单。无缝支持多个数据库,使用annotation processing提高速度,ModelContainer类库可以直接解析像JSON这样的数据,增加灵活性的丰富接口。

ActiveAndroid 是采用活动记录(Active Record)架构模式设计的适用于Android平台的轻量级ORM架构

LitePal 是对象关系映射(ORM)模型。它使开发者使用SQLite数据库变得非常容易。 你可以不用写一句SQL语句就可以完成大部分数据库操作,包括创建表,更新表,约束操作,聚合功能等等。

LitePal
LitePal的集成和简单的使用
LitePal中实现增删改查
LitePal一些常用的API介绍
 
LitePal的集成和简单的使用
引入相应的类库
compile 'org.litepal.android:core:1.6.1'
这个可以去项目源码中找到最新的类库

创建相应的litepal.xml文件
首先这个文件是在相应的assets文件夹下(创建方法为项目文件夹下New->Folder->Assets Folder就可以创建相应的assets文件夹了),然后在assets文件夹下创建一个相应的litepal.xml文件夹,下面是具体的内容:

<?xml version="1.0" encoding="utf-8"?>
<litepal>
<dbname value="file"/>
<version value="1"/>
<list>
<mapping class="com.hejin.download.FileInfo"/>
</list>
</litepal>
这里说明几点问题:

dbname标签是相应的数据库名称

version标签是相应的数据库的版本,这里注意当里面引用的内容发生改变的时候,要升级相应的版本

list标签是那些对象需要数据库管理,这里注意mapping里面的路径一定要是全路径名称

这里面list标签中的实体类都应该继承DataSupport这个类,这个千万别忘记

更换继承的Application
这里其实份两种情况:

已经有继承的Application

直接继承LitePalApplication

为什么分为这两种情况呢?因为有的项目中可能之前实现Application已经继承了一个其他类型的Application了,那么这个时候因为java的单继承,所以这里就不能直接继承LitePalApplication了,但是LitePal已经帮我们想到这个问题了,所以说下面我们分两种情况实现一下:

第一种

直接在相应项目中的Application中的onCreat()方法中初始化一下就可以了,像下面这样:

@Override
public void onCreate() {
super.onCreate();
LitePal.initialize(this);
}
这样你的Application可以随便继承其他的Application

在manifest.xml中引入相应的Application,也就是你之前的Application

第二种

直接继承相应的LitePalApplication这里就不用在onCreat()中调用LitePal.initialize(this);这个方法了;

这个就比较特殊了要在相应的application标签中添加Application的时候要这样写android:name="org.litepal.LitePalApplication"

LitePal中实现CRUD(增删改查)
LitePal添加数据
关于相应的增加操作,这里主要是通过对象的save()进行的,怎么说呢?其实你只要给相应的类添加了相应的集体参数然后调用相应的save()方法就可以了.具体代码如下:

LitePalBean zhangSanBean = new LitePalBean("张三", "20", "男");
zhangSanBean.save();
LitePalBean liSiBean = new LitePalBean("李四", "25", "男");
liSiBean.save();
这样就形成了相应的数据库的表结构了,也就是有了相应的数据库了,但是如果你在手机上调试的不Root的话是看不到的.这里说明一个问题添加相同的内容是可以添加进去的

LitePal删除数据
关于删除数据的操作,这里主要是通过对象的delete()或者deleteAll()进行删除,具体代码如下:

/*这里就是删除所有名字是张三的*/
DataSupport.deleteAll(LitePalBean.class, "name =?", "张三");

LitePalBean zhangSanBean = new LitePalBean("张三", "20", "男");
zhangSanBean.save();
zhangSanBean.delete();
这里删除的两种方式:

直接对象删除:也就是对象直接调用delete();方法进行;

根据类型进行删除,其实这里就是相当于SQLite进行删除,这里有必要说明一下第二个语句传入内容如果为"name=?"代表的是所有name为后面字段的内容,也就是所有名字为张三的内容都会删除.那么你会问了如果这里面我传入两个内容呢?比如"name=? and age=?"对没错,就是用and进行连接

LitePal更新数据
这里其实很简单,就是更改完相应的数据直接save保存就可以了,代码如下:

LitePalBean zhaoWuBean = new LitePalBean("赵五", "25", "男");
zhaoWuBean.save();
zhaoWuBean.setAge("30");
zhaoWuBean.save();
这里有一个问题,感觉应该是先取出来这个对象在进行操作才对,才能确保内容的正确性.

LitePal查询方法
关于查询数据的操作,主要用到find()和findAll()等相应的方法,具体代码如下:

List<LitePalBean> all = DataSupport.findAll(LitePalBean.class);
for (int i = 0; i < all.size(); i++) {
Log.e(TAG, "query: " + all.get(i).toString());
}
}
 
LitePal常用的API
DataSupport.findFirst(XXX.class)
查询XXX列表中的第一个元素

DataSupport.findLast(XXX.class)
查询XXX列表中的最后一个元素

DataSupport.select()
根据SQLite中的关键字进行查找,例如DataSupport.select("name","age").find(XXX.class) 查询的是相应名字和年龄的两列数据 其他的数据是查不出来的.

DataSupport.where()
相当于SQLite中的where关键字查找,这里还是举个例子->DataSupport.where("name=?","张三").find(XXX.class) 查询的是所有名字为张三的数据内容;

DataSupport.order()
相当于SQLite中的order关键字查找,主要是排序方式,这里还是举个例子->DataSupport.order(price desc).find(XXX.class) 这里面是按照降序进行排列的;desc标识降序排列,**asc
**代表升序排列

DataSupport.limit()
查询数据库的结果的数量 例子->DataSupport.limit(3).find(XXX.class); 查询3条数据

DataSupport.offset()
查询制定结果的偏移量 例子(我想查询第二条第三条和第四条)-> DataSupport.limit(3).offset(1).find(XXX.class); 这里是从第一条开始,但是不包含相应的第一条

---------------------

转载于:https://www.cnblogs.com/hyhy904/p/10987459.html

SQlite数据库框架:LitePal相关推荐

  1. sqlite java框架_SQlite数据库框架:LitePal

    常用的数据库框架 Android的发展的速度是难以置信的,Android出来哪一年我还在小学上学很,还能很清楚的记得,那年一切,但是那个时候的我怎么可能也不会想到自己将来会要去做Android.And ...

  2. Android客户端开发—开源数据库框架LitePal

    LitePal是一款开源的Android数据库框架,采用对象关系映射(ORM)模式,将常用的数据库功能进行封装,不使用SQL语句就可以完成创建表以及表单的CRUD操作,并且很轻量级,几乎零配置.(它将 ...

  3. 安卓进阶系列-06数据库框架(LitePal)的使用

    LitePal的使用 背景 安卓内置了一个轻量数据库SQLite,然而很多时候使用SQLite是不方便的,更多开发者习惯服务器部署MySQL之类的数据库,而且复杂的SQL语言对于很多没有系统学习过数据 ...

  4. android 开源 数据库,Android开源数据库框架-LitePal的使用

    简介 LitePal是一款开源的Android数据库框架,采用了关系映射的模式.LitePal在github上的项目地址:github.com/LitePalFram- 配置LitePal depen ...

  5. Android数据库框架总结

    本文转自:http://blog.csdn.net/da_caoyuan/article/details/61414626 一:OrmLite 简述: 优点: 1.轻量级:2.使用简单,易上手:3.封 ...

  6. 使用iOS原生sqlite3框架对sqlite数据库进行操作

    摘要: iOS中sqlite3框架可以很好的对sqlite数据库进行支持,通过面向对象的封装,可以更易于开发者使用. 使用iOS原生sqlite3框架对sqlite数据库进行操作 一.引言 sqlit ...

  7. Android sqlite数据库操作通用框架AHibernate(一)-CRUD示例和使用步骤

    AHibernate简介 一句话描述,使用AHibernate框架进行sqlite数据库操作您将从重复性劳动中解脱出来. (一)支持功能: 1.自动建表,支持属性来自继承类:可根据注解自动完成建表,并 ...

  8. 使用反射+注解封装一个基于Sqlite极简的android数据库框架

    数据库 背景 GreenDao 封装 创建数据库 对象映射表 数据库操作 扩展 总结 背景 目前市面上已经有比较好用的数据库框架,比如GreenDao和OrmLite,而且功能也很齐全,那为什么还要多 ...

  9. 配置郭神的LitePal(面向对象一样操作sqlite数据库,不再使用SQL语句)

    配置郭神的LitePal(面向对象一样操作sqlite数据库,不再使用SQL语句) 配置过程可见: https://github.com/guolindev/LitePal 但是我要补充一个小问题 然 ...

  10. Labview2019,通讯三菱plc,用opc和mc通讯协议,sqlite数据库,labview标准框架jki状态机,加上数组队列,实现多线程交互。

    Labview2019,通讯三菱plc,用opc和mc通讯协议,sqlite数据库,labview标准框架jki状态机,加上数组队列,实现多线程交互. _:4550670508310561加菲猫眼

最新文章

  1. linux/centos 解决Tomcat内存溢出,centostomcat
  2. 4.3 matlab常用的特殊图形(条形图、直方图、饼图、散点图等)
  3. 根据窗口名获取进程句柄和PID
  4. DCMTK:各种“字符串值”方法的测试程序
  5. Android 极光推送设置别名
  6. 通过点击事件监听 setOnClickListener 彻底理解回调-Android
  7. 使用jQuery加载js脚本
  8. 华为麦芒9正式亮相:6400万三摄,2199元起
  9. Zookeeper 安装部署
  10. Java多线程总结之线程安全队列Queue
  11. Redis 官方可视化工具,高颜值,功能太强大!
  12. 谈谈我对《ThoughtWorks文集》中多语言开发部分的看法
  13. 对数换底公式及推导证明
  14. 最简洁的富文本编辑器
  15. 固定翼航模及四旋翼无人机基础
  16. Deep Stream Ai落地--初体验
  17. Android adb: failed to install 0.apk: Failure [null]
  18. endNote操作教程-2-文献导入到endNote
  19. 汇编语言: 试编制一个程序:从键盘输入一行字符,要求第一个键入的字符必须是空格符,如不 是,则退出程序;如是,则开始接收键入的字符并顺序存放在首地址为buffer的缓冲区中(空 格符不存入),直到接收
  20. 【linux】在linux上生成SSH-key 简单原理介绍+生成步骤

热门文章

  1. 检测手机屏幕是否亮屏解锁
  2. shell中exec命令
  3. 使用shadow dom封装web组件
  4. 减少.NET应用程序内存占用的一则实践
  5. Surprise 使用本地数据
  6. 【ACL2021】话题感知的语义建模
  7. 【python】见过if else组合,但是你见过for else组合吗?
  8. 【一分钟论文】轻松解读Semi-supervised Sequence Learning半监督序列学习
  9. 如何为 MySQL 选择 CPU?
  10. 跟着AlphaGo 理解深度强化学习框架