时间:2021-05-21
今日观看别人源码的时候偶然间发现了一个很好用的数据库神器,在这里分享一下。
什么是dbflow?
dbflow是Android SQLite ORM的一个使用注解操控的工具库。简单说就是对sqlite数据库进行操作的一个java库。
ORM(Object-relational mapping),中文翻译为对象关系映射,是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。
为什么使用dbflow?
1、 速度
基于AnnotationProcessing(注解处理器),在编译时生成代码,运行时性能优良,通过复用对象以及缓存机制,得到不错的速度体验。
2、 扩展性
数据表单映射到数据对象,通过该对象继承Model类,一般的话继承BaseModel类就可以,对类内成员添加注解生成所需要的表单。
3、 查询语句
如果你使用过greenDao等其他的库的话,查询语句都非常接近SQL语句。
4、 基于sqlite
不限制平台,有sqlite的地方就可以使用dbflow。
5、 开源
源码是个好东西,有能力的人可以看看。https://github.com/Raizlabs/DBFlow
怎么使用dbflow
配置环境
不管是想学习什么东西,环境就是个主要东西,那对于一个三方库来说第一步就是导入类库。
首先在主要的build.gradle中添加maven地址:
allprojects { repositories { maven { url "https://jitpack.io" } }}其次在基类module中添加依赖:
复制代码 代码如下:
def dbflow_version = "4.2.4" dependencies { annotationProcessor "com.github.Raizlabs.DBFlow:dbflow-processor:${dbflow_version}" compile "com.github.Raizlabs.DBFlow:dbflow-core:${dbflow_version}" compile "com.github.Raizlabs.DBFlow:dbflow:${dbflow_version}" compile "com.github.Raizlabs.DBFlow:dbflow-rx2:${dbflow_version}" compile "com.github.Raizlabs.DBFlow:dbflow-sqlcipher:${dbflow_version}" }
如果需要添加kotlin的代码的话查看上文的源码地址下方有说明。
使用
在Application中添加init
FlowManager.*init*(this);创建数据库
@Database(name = DbFlowData.*DBNAME*,version = DbFlowData.*VERSION*) public class DbFlowData { public static final String *DBNAME*="DbFlowData"; public static final int *VERSION*=1; }使用注解Database,name数据库名称 version数据库版本
创建表单
@Table(database = DbFlowData.class) public class DbFlowModel extends BaseModel { @PrimaryKey(autoincrement = true) public int id; @Column public String name; public int getId() { return id; } public void setId(int id) { this.id = id; } public String getName() { return name; } public void setName(String name) { this.name = name; }}使用注解Table database从属数据库对象,表单属性使用各类注解,PrimaryKey主键,Colum列。
注意:这里我们继承的 BaseModel 是 DBFlow 给我们提供的,是可以不继承的,差别仅仅增删改查的操作上有所不同。
创建完后,点击Build->make,会在..\build\generated\source\apt\debug下生成必要代码。
插入:
创建一个表单对象,赋值完,调用save方法即可插入操作。
复制代码 代码如下:DbFlowModel dbFlowModel = new DbFlowModel(); dbFlowModel.name = name; dbFlowModel.save();
删除:
类似于sql语句的代码进行操作
SQLite.*delete*() .from(DbFlowModel.class) .where(DbFlowModel_Table.*id*.eq(id), DbFlowModel_Table.*name*.eq(name)) .execute();查询:
这个有很多复杂的查询操作,想知道详细的还是看官方文档。
复制代码 代码如下:List<DbFlowModel> list = SQLite.*select*().from(DbFlowModel.class).queryList();
更新:
都是类似的。
SQLite.*update*(DbFlowModel.class) .set(DbFlowModel_Table.*name*.eq("PXXXX")) .where(DbFlowModel_Table.*name*.eq("P0000")) .execute();注意:新建表单后,需要对数据库的version进行升级,不然会报错的。
这里主要简单的介绍一下dbflow的基本使用,主要用作分享和记录一些好用的东西,
源码:https://github.com/xiaogoudandan/WilliamApp
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
声明:本页内容来源网络,仅供用户参考;我单位不保证亦不表示资料全面及准确无误,也不保证亦不表示这些资料为最新信息,如因任何原因,本网内容或者用户因倚赖本网内容造成任何损失或损害,我单位将不会负任何法律责任。如涉及版权问题,请提交至online#300.cn邮箱联系删除。
一.简介SQLite数据库是一个轻量级的DBMS(数据库管理系统)。SQLite使用单个文件存储数据,Android标准库包含SQLite库以及配套使用的一些J
本文实例讲述了Android编程之数据库Sql编程实现方法。分享给大家供大家参考。具体分析如下:Android中安装轻量级数据库Sqlite,现在测试数据库基本
本文实例讲述了Android开发中的数据库事务用法。分享给大家供大家参考,具体如下:在android应用程序开发中,在使用到数据库的时候,事务处理是非常重要的。
Android和iOS的数据库都是用SQLite来实现.一,SQLite数据库简介:轻量级:SQLite数据库是一个轻量级的数据库,适用于少量数据的CURD;文
本文实例讲述了Android创建或升级数据库时执行的语句,如果是创建或升级数据库,请使用带List参数的构造方法,带SQL语句的构造方法将在数据库创建或升级时执