什么是DBFlow?

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

1、环境配置

  1. 先导入 apt plugin库到你的classpath,以启用AnnotationProcessing(注解处理器):在工程的根目录下build.gradle代码如下:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    buildscript {
    repositories {
    jcenter()
    }
    dependencies {
    classpath 'com.android.tools.build:gradle:2.2.2'
    classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
    }
    }
    allprojects {
    repositories {
    jcenter()
    maven { url "https://www.jitpack.io" }
    }
    }

添加 classpath ‘com.neenbedankt.gradle.plugins:android-apt:1.8’
和 maven { url “https://www.jitpack.io“ }

  1. 添加库到项目级别的build.gradle文件中

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    apply plugin: 'com.android.application'
    apply plugin: 'com.neenbedankt.android-apt'
    def dbflow_version = "3.0.0-beta4"
    android {
    compileSdkVersion 25
    buildToolsVersion "25.0.0"
    defaultConfig {
    applicationId "com.soildog.testdbflow"
    minSdkVersion 21
    targetSdkVersion 25
    versionCode 1
    versionName "1.0"
    testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
    }
    buildTypes {
    release {
    minifyEnabled false
    proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
    }
    }
    dependencies {
    compile fileTree(include: ['*.jar'], dir: 'libs')
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
    exclude group: 'com.android.support', module: 'support-annotations'
    })
    testCompile 'junit:junit:4.12'
    //support
    compile 'com.android.support:appcompat-v7:25.0.1'
    compile 'com.android.support:design:25.0.1'
    // dbflow
    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}"
    }

2.初始化DBFlow

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public class extends Application {
private static App mContext;
public void onCreate() {
super.onCreate();
FlowManager.init(this);
}
//单例模式
public static App getInstance(){
if (mContext == null) {
mContext = new App();
}
return mContext;
}
}

记得添加到AndroidManifest.xml中,name = “App”


3、创建数据库:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
import com.raizlabs.android.dbflow.annotation.Database;
/**
* Created by 24277 on 2016/12/6.
*/
//以注释的方式创建
@Database(name = AppDatabase.NAME,version = AppDatabase.VERSION)
public class AppDatabase {
//数据库名
public static final String NAME = "AppDatabase";
//数据库的版本号
public static final int VERSION = 1;
}

4、创建数据库表:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import com.raizlabs.android.dbflow.annotation.Column;
import com.raizlabs.android.dbflow.annotation.ModelContainer;
import com.raizlabs.android.dbflow.annotation.PrimaryKey;
import com.raizlabs.android.dbflow.annotation.Table;
import com.raizlabs.android.dbflow.structure.BaseModel;
/**
* Created by 24277 on 2016/12/6.
*/
//这个表从属于AppDatabase数据库
@ModelContainer
@Table(database = AppDatabase.class)
public class Student extends BaseModel{
//注释表示创建一列 名叫id
@Column
//主键,自增长
@PrimaryKey(autoincrement = true)
public long id;
@Column
public String name;
@Column
大专栏  DBFlow框架的学习笔记之入门lass="line"> public String sex;
public String toString() {
return "Student{" +
"id=" + id +
", name='" + name + ''' +
", sex='" + sex + ''' +
'}';
}
}

(1)对类添加@Table注解
(2) 声明所连接的数据库类,这里是DBFlowDatabase。
(3)定义至少一个主键。
(4)这个类和这个类中数据库相关列的修饰符必须是包内私有或者public,这样生成的_Adapter类能够访问到它。


创建完成后,需要编译一下,点击编译按钮,或者Build->Make Project即可,它会自动生成一些数据库文件,也会提示你创建是否有误!

如果编译通过会生成一些类,位置:TestDBFLowappbuildgeneratedsourceaptdebugcomsoildogtestdbflowentity
如:Student_Table(在下文中很重要)


5、创建一个管理类用于对数据的增删该查

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
package com.soildog.testdbflow.manager;
import android.content.Context;
import android.widget.Toast;
import com.raizlabs.android.dbflow.sql.language.Select;
import com.soildog.testdbflow.App;
import com.soildog.testdbflow.entity.Student;
import com.soildog.testdbflow.entity.Student_Table;
import java.util.List;
/**
* Created by 24277 on 2016/12/6.
*/
public class DBFLowManager {
private Context mContext;
private Student mStudent;
public DBFLowManager() {
mContext = App.getInstance();
mStudent = new Student();
}
public Student queryData(String name) {
Student record = new Select()
.from(Student.class)
.where(Student_Table.name.eq(name))
.querySingle();
return record;
}
public void insert(int id,String name,String sex){
mStudent = queryData(name);
if (mStudent == null) {
mStudent = new Student();
mStudent.name = name;
mStudent.sex = sex;
}
mStudent.save();
//people.update();//更新对象
//people.delete();//删除对象
//people.insert();//插入对象;
}
public List<Student> getData() {
List<Student> record = new Select()
.from(Student.class)
.queryList();
return record;
}
public void deletAllData(String name) {
List<Student> record = new Select()
.from(Student.class)
//.where("name = ?",new String[]{name})
.queryList();
for (Student student : record) {
student.delete();
}
}
public void upData(int id,String name,String sex){
Student record = new Select()
.from(Student.class)
//.where("id = ?",new String[]{""+id})
.querySingle();
if (record == null){
Toast.makeText(mContext, "没有更改的数据", Toast.LENGTH_SHORT).show();
return;
}else{
record.name = name;
record.sex = sex;
record.save();
Toast.makeText(mContext, "更新成功", Toast.LENGTH_SHORT).show();
}
}
public List<Student> queryAll() {
List<Student> record = new Select()
.from(Student.class)
.queryList();
return record;
}
}

ps:Student_Table是如何出现的那?->>是自动编译生成的。

6、最后就是写一个测试类去测试一下,这里就不多说了。。。

参考:

  1. dbflow的学习
  2. DBFLOW的初使用

android篇 未完待续。。。

上一篇:recycerlerView大小图片适配问题

下一篇:Hello World

DBFlow框架的学习笔记之入门的更多相关文章

  1. WebSocket学习笔记——无痛入门

    WebSocket学习笔记——无痛入门 标签: websocket 2014-04-09 22:05 4987人阅读 评论(1) 收藏 举报  分类: 物联网学习笔记(37)  版权声明:本文为博主原 ...

  2. MongoDB学习笔记:快速入门

    MongoDB学习笔记:快速入门   一.MongoDB 简介 MongoDB 是由C++语言编写的,是一个基于分布式文件存储的开源数据库系统.在高负载的情况下,添加更多的节点,可以保证服务器性能.M ...

  3. python学习笔记--Django入门四 管理站点--二

    接上一节  python学习笔记--Django入门四 管理站点 设置字段可选 编辑Book模块在email字段上加上blank=True,指定email字段为可选,代码如下: class Autho ...

  4. jfinal框架教程-学习笔记

    jfinal框架教程-学习笔记 JFinal  是基于 Java  语言的极速  WEB  + ORM  开发框架,其核心设计目标是开发迅速.代码量少.学习简单.功能强大.轻量级.易扩展.Restfu ...

  5. Java框架spring 学习笔记(十八):事务管理(xml配置文件管理)

    在Java框架spring 学习笔记(十八):事务操作中,有一个问题: package cn.service; import cn.dao.OrderDao; public class OrderSe ...

  6. Mina框架的学习笔记——Android客户端的实现

    Apache MINA(Multipurpose Infrastructure for Network Applications) 是 Apache 组织一个较新的项目,它为开发高性能和高可用性的网络 ...

  7. Java学习笔记之---入门

    Java学习笔记之---入门 一. 为什么要在众多的编程语言中选择Java? java是一种纯面向对象的编程语言 java学习起来比较简单,适合初学者使用 java可以跨平台,即在Windows操作系 ...

  8. golang日志框架--logrus学习笔记

    golang日志框架--logrus学习笔记 golang标准库的日志框架非常简单,仅仅提供了print,panic和fatal三个函数,对于更精细的日志级别.日志文件分割以及日志分发等方面并没有提供 ...

  9. go微服务框架kratos学习笔记五(kratos 配置中心 paladin config sdk [断剑重铸之日,骑士归来之时])

    目录 go微服务框架kratos学习笔记五(kratos 配置中心 paladin config sdk [断剑重铸之日,骑士归来之时]) 静态配置 flag注入 在线热加载配置 远程配置中心 go微 ...

随机推荐

  1. 论文或github中一些通用思想

    (1) 云从 上海交大 ECCV2018 http://openaccess.thecvf.com/content_ECCV_2018/papers/Yao_Feng_Joint_3D_Face_EC ...

  2. 14. docker 网络 docker bridge0 详解

    1.创建一个 container docker run -d --name test1 busybox /bin/sh -c "while true; do sleep 3600; done ...

  3. 【YOLO学习】召回率(Recall),精确率(Precision),平均正确率(Average_precision(AP) ),交除并(Intersection-over-Union(IoU))

    摘要 在训练YOLO v2的过程中,系统会显示出一些评价训练效果的值,如Recall,IoU等等.为了怕以后忘了,现在把自己对这几种度量方式的理解记录一下. 这一文章首先假设一个测试集,然后围绕这一测 ...

  4. linuxmint截图

    利用import命令截图,并设置快捷键 shift + PrtScrSysRq: 选中区域截图. 设置快捷键的时候,提示: Ctrl + PrtScrSysRq: 复制截图到剪切板 PrtScrSys ...

  5. linux中cd / cd~ cd cd- 和cd..之间的区别

    cd        进入用户主目录  cd ~     进入用户主目录  cd -      返回进入此目录之前所在目录  cd ..     返回上一级目录  cd ../..  返回上两级目录  ...

  6. Oscar的数理统计笔记本

    目录 Random Variable discrete distribution: continuous distribution: 统计量 现代统计学时期: Survey sampling Rand ...

  7. Gene family|

    6.1引言 随着测序技术的提高,能被测序的物种趋近于复杂(因为越高等的生物基因组大且复杂(1.本身基因结构复杂2.复杂程度与种属关系并不相关)),所以基因家族(Gene family)的数目可能能够更 ...

  8. 【shell】概述

    功能简介 批量自动初始化系统(update,软件安装,时区设置,安全策略...) 批量自动部署软件(LAMP,LNMP,Nginx,LVS,Tomcat) 管理应用程序(KVM,集群管理扩容,MySQ ...

  9. LeetCode No.109,110,111

    No.109 SortedListToBST 有序链表转换二叉搜索树 题目 给定一个单链表,其中的元素按升序排序,将其转换为高度平衡的二叉搜索树. 本题中,一个高度平衡二叉树是指一个二叉树每个节点 的 ...

  10. Codeforces Round #572 (Div. 1) 差E

    Codeforces Round #572 (Div. 1) A2 题意:给一棵树,带边权,互不相同且为偶数.每次操作是选两个叶子然后在路径上同时加一个数.初始边权全是0,求一个操作序列使得最终边权与 ...