SQlite数据库框架:LitePal
常用的数据库框架 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.xml文件 <?xml version="1.0" encoding="utf-8"?> dbname标签是相应的数据库名称 version标签是相应的数据库的版本,这里注意当里面引用的内容发生改变的时候,要升级相应的版本 list标签是那些对象需要数据库管理,这里注意mapping里面的路径一定要是全路径名称 这里面list标签中的实体类都应该继承DataSupport这个类,这个千万别忘记 更换继承的Application 已经有继承的Application 直接继承LitePalApplication 为什么分为这两种情况呢?因为有的项目中可能之前实现Application已经继承了一个其他类型的Application了,那么这个时候因为java的单继承,所以这里就不能直接继承LitePalApplication了,但是LitePal已经帮我们想到这个问题了,所以说下面我们分两种情况实现一下: 第一种 直接在相应项目中的Application中的onCreat()方法中初始化一下就可以了,像下面这样: @Override 在manifest.xml中引入相应的Application,也就是你之前的Application 第二种 直接继承相应的LitePalApplication这里就不用在onCreat()中调用LitePal.initialize(this);这个方法了; 这个就比较特殊了要在相应的application标签中添加Application的时候要这样写android:name="org.litepal.LitePalApplication" ? LitePalBean zhangSanBean = new LitePalBean("张三","20","男"); LitePal删除数据 /*这里就是删除所有名字是张三的*/ 直接对象删除:也就是对象直接调用delete();方法进行; 根据类型进行删除,其实这里就是相当于SQLite进行删除,这里有必要说明一下第二个语句传入内容如果为"name=?"代表的是所有name为后面字段的内容,也就是所有名字为张三的内容都会删除.那么你会问了如果这里面我传入两个内容呢?比如"name=? and age=?"对没错,就是用and进行连接 LitePal更新数据 LitePalBean zhaoWuBean = new LitePalBean("赵五","男"); LitePal查询方法 List<LitePalBean> all = DataSupport.findAll(LitePalBean.class); DataSupport.findLast(XXX.class) DataSupport.select() DataSupport.where() DataSupport.order() DataSupport.limit() DataSupport.offset() ?---------------------? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |