数据库DBFlow应用场景及其分析

先上一张效果图

dbflow定义

dbflow是一款android高性的ORM数据库.可以使用在进行项目中有关数据库的操作。

dbflow是Android

SQLite ORM 的一个工具库。综合了 Active Android, Schematic, Ollie,Sprinkles

等库的优点;通过注解实现,性能好;能生成 ContentProvider

为什么要是用DBFlow

根据DBFlow的源码来看,是分多个module的,有一个module叫做processor,这是编译时注解处理器Module,看到AbstractProcessor了吧,编译时注解处理器都需要继承这个类,可见DBFlow是编译时注解处理,在编译时就将表相关信息生成了,在编译的时候会把生成的java代码和你自己项目的代码打包到一起,在运行时,就可以调用这些代码了,不需要再写运行时注解处理器,避免反射机制带来的性能负担。

DBFlow有何优势

DBFlow的设计吸取了其他很多ORM框架中好的特征,并将之做得更好。它很灵活,让你能更专注于App中真正需要关注的地方。不要让一个ORM库限制了你的思维,而是让代码在你的App中工作得更好。

*扩展性*:

ORM所需的数据类只需要实现Model接口即可,而不需要必须继承一个类,同时为了方便,我们还是推荐继承BaseModel,这是Model接口的一个标准实现。这样你既可以通过继承一个来自其他包的非Model类来生成你的数据库表,也可以通过继承一个Model类并通过添加@Column注解的属性向表中自由添加列。这一切都是为了方便你的使用。

*速度*:DBFlow基于AnnotationProcessing(注解处理器),通过编译期代码生成,运行时对性能是零损耗的。通过模板来为你维护生成的代码。通过缓存和尽可能地重用对象,我们得到了比原生SQLite更快的速度。同时我们还支持懒加载(lazy-loading),比如对于@ForeignKey和@OneToMany,这使得我们有着更高效得查询效率。

*SQLite查询流(SQLite

Query Flow)*:

DBFlow的查询语法尽可能地和SQL语句相似,使您能更快上手。select(name,

screenSize).from(Android.class).where(name.is(“Nexus

5x”)).and(version.is(6.0)).querySingle()

*开源*:

整个DBFlow库都是开源的,而且也非常欢迎大家来为这个库贡献自己的力量。 Robust:

我们支持Trigger,ModelView,Index,Migration,所有的数据库操作都在同一个线程(线程安全),还有其他特性。

*多数据库、多表单*:

我们无缝支持多数据库文件,database modules using DBFlow in other dependencies,

simultaneously.

*基于SQLite*:

SQLite是世界上使用最广泛的数据库引擎,基于SQLite的DBFlow使你不需要被限制在某些平台上。

使用步骤(以最新的为例):

第一步 : 在Module级别的gradle中添加

apply plugin: 'com.neenbedankt.android-apt'

def dbflow_version = "4.1.2"

dependencies {

apt "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}"

// sql-cipher database encyrption (optional)

compile "com.github.Raizlabs.DBFlow:dbflow-sqlcipher:${dbflow_version}"

}

第二步: 在项目级的gradle中添加

buildscript {

repositories {

jcenter()

}

dependencies {

classpath 'com.android.tools.build:gradle:2.3.2'

classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'

}

}

allprojects {

repositories {

jcenter()

maven { url "https://www.jitpack.io" }

}

}

第三步: 初始化

@Override

public void onCreate() {

super.onCreate();

FlowManager.init(new FlowConfig.Builder(this).build());

// FlowManager.init(this);//这句也可以初始化

}

第四步:配置数据库相关参数

@Database(name = AppDatabase.NAME, version = AppDatabase.VERSION)

public final class AppDatabase {

//数据库名称

public static final String NAME = "AppDatabase";

//数据库版本号

public static final int VERSION = 1;

}

第五步:新建数据库表

@Table(database = AppDatabase.class)

public class Good extends BaseModel implements Serializable {

@Column

public String gName;

@Column

public String gDes;

@Column

public int num;

@PrimaryKey(autoincrement = true)//ID自增

public long id;

public String getgName() {

return gName;

}

public void setgName(String gName) {

this.gName = gName;

}

public String getgDes() {

return gDes;

}

public void setgDes(String gDes) {

this.gDes = gDes;

}

public int getNum() {

return num;

}

public void setNum(int num) {

this.num = num;

}

public long getId() {

return id;

}

public void setId(long id) {

this.id = id;

}

}

androidStudio

报错

Plugin with id 'com.neenbedankt.android-apt' not found.

1

2

buildscript {

repositories {

jcenter()

}

dependencies {

classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'

}

}

Android数据库选哪个,DBFlow—目前最好用的安卓数据库相关推荐

  1. Android 数据库 哪个好,目前最好用的安卓数据库,DBFlow使用详解

    1.在你使用之前,建议你先阅读一下官方文档 https://agrosner.gitbooks.io/dbflow/content/ 2.步骤如下: (1)在项目级的gradle中添加 buildsc ...

  2. 一起来开发Android的天气软件(二)——使用LitePal搭建数据库

    谢谢大家对该系列博文的支持与关注,我们现在趁热打铁正式开始我们的Android天气软件的开发吧!没有阅读过之前关于该软件的功能需求的同学可以先看一下一起来开发Android的天气软件(一),可以先去快 ...

  3. android timer后函数继续执行_Android连载34更新数据库以及使用SDK自带adb工具

    一.使用adb shell功能 Book表是无法通过File Explorer来看的,所以我们可以使用android SDK自带的一个工具来进行查看,这个工具就是adb 首先我们要把该工具所在的地址配 ...

  4. Android读出Excel报表数据然后导出写入到SQLite数据库

    Android读出Excel报表数据然后导出写入到SQLite数据库 假设现在有一个excel.xls位于Android手机外部存储器的根目录下,数据报表为: 需要把excel.xls的数据导出,写入 ...

  5. Android中Shared Preferences、Files、Network、SQLite数据库编程总结及示例

    Android数据存储 前言 Android中提供了4中数据存储方式.但是存储的这些数据都是私有的,要想在其他应用程序中使用这些数据.就需要使用ContentProvider(数据共享).下面是对4种 ...

  6. Android Studio 使用jdbc远程连接阿里云主机web数据库(逃坑)

    Android Studio 使用jdbc远程连接阿里云主机web数据库(逃坑) Tip1:主线程不能访问网络需要再写一个线程,访问web数据库. Test 1 : 接下来开始配置一些东西: < ...

  7. Android studio根据文本提取出的关键词在sqlite数据库中查找相关内容

    Android studio根据文本提取出的关键词在sqlite数据库中查找相关内容 一.介绍 二.Android studio连接.操作和查看sqlite数据库 三.在数据库中查找相关内容 四.运行 ...

  8. Android数据库加解密逆向分析(三)——微信数据库密码破解

    接着上一篇文章,在上一篇文章中我们通过对Line数据库加密的逆向分析,了解到了对要写入到数据库中的数据加密,读取时再将读取出的数据解密这种Android上的数据库加密方式.这篇文章来通过介绍对微信数据 ...

  9. Android 安卓数据库 sqlite android自带数据库使用

    Android 安卓数据库 Android是有自带的数据库的 原生数据库 public class MySQLiteHelper extends SQLiteOpenHelper {private s ...

最新文章

  1. Java常见面试题及答案汇总
  2. linux posix 线程池_linux多线程--POSIX Threads Programming
  3. matlab 图像矢量量化,MATLAB环境下基于矢量量化的说话人识别系统(1)
  4. spring 监听器简介
  5. python Authentication plugin ‘caching_sha2_password‘ is not supp
  6. 写给即将过去的2012
  7. APP设计UI优秀案例|价格标签这样设计才更直观!
  8. shuffle的过程分析
  9. [AtCoder Beginner Contest 133]F - Colorful Tree
  10. Asp.net 使用weboffice实现Word在线编辑
  11. 区块链在供应链领域的应用案例
  12. scrapy爬虫项目的建立
  13. c语言作业 分解质因数,C语言算法之分解质因数
  14. 激荡三十年:1978-2008 之序
  15. 三种方式让 Android WebView 支持文件下载
  16. Selenium基于Python的web自动化测试框架(1)-环境搭建
  17. 赛轮转债上市价格预测
  18. stm32—超声波传感器
  19. 通过以太坊实现自己的ICO
  20. 详解 masm + textpad 编译环境的搭建

热门文章

  1. 极家精装好吗?看看案例就知道了
  2. 简单的朋友圈界面-Android(一)
  3. c语言中htonl函数,htonl()函数学习
  4. htonl函数 c语言,c – 理解htonl()和ntohl()
  5. 【Qualcomm】在EFS的NV项中打开voice通话自动接听
  6. AD10右下角显示标题
  7. c语言项目开发全程实录视频,C语言项目开发全程实录(第2版)(软件项目开发全程实录)简介,目录书摘...
  8. 注册宝第五期beta2插件模块下载及说明
  9. Java充电宝模型设计_java毕业设计_springboot框架的共享充电宝管理与实现
  10. 【AI实时变声器,声音甜甜的小姐姐背后竟是抠脚大汉】