常用的数据库框架
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. IIS 7启用static JSON文件能POST方法
  2. vim 中如何替换选中行或指定几行内的文本
  3. Oracle中查看最近被修改过的表的方法
  4. Linux下载安装一个源码包
  5. JSP页面最终是编译为Servlet执行的
  6. VxWorks关于任务创建的几个函数的概述
  7. pytorch1.0 用torch script导出模型
  8. 简述计算机j选件,计算机组成原理06new.ppt
  9. Python——如何屏蔽函数内部的print输出
  10. Silverlight WCF RIA服务(二十九)Silverlight 客户端 10
  11. 2017年数模国赛B题第一小题的思路过程(个人思路)
  12. 计算机如何设置多用户,windows7远程桌面多用户连接怎么设置_win7远程桌面如何设置多人登录-win7之家...
  13. uniapp安卓创建桌面快捷方式
  14. BottomNavigationView--基本使用总结
  15. 柿饼UI在ART-Pi上的移植
  16. css 文本超出显示省略号不起作用
  17. 谷歌浏览器自带的翻译功能无法使用的解决办法
  18. 操作系统第五章——进程同步
  19. C语言俄罗斯方块(新版本完整代码)
  20. Netapp存储FTP功能配置

热门文章

  1. spark源码阅读之network(3)
  2. selenium python grid
  3. quartz 时间设置(定时任务scheduler)
  4. Hadoop学习之SecondaryNameNode
  5. ACL2021 | 一种巧妙解决NER覆盖和不连续问题的方法
  6. 免费报名 | DataFunCon:自然语言处理论坛
  7. 【面经】腾讯NLP实习面经(Offer已拿)
  8. 【2019 NLP汇总】论文、博客、教程、工程进展全梳理(长文预警)
  9. NLP硬核入门-条件随机场CRF
  10. 赛尔笔记 | 自然语言处理中的迁移学习(下)