什么是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. maven中scope属性有哪些

    compile,缺省值,适用于所有阶段,会随着项目一起发布. provided,类似compile,期望JDK.容器或使用者会提供这个依赖.如servlet.jar. runtime,只在运行时使用, ...

  2. 吴裕雄--天生自然 PYTHON3开发学习:JSON 数据解析

    import json # Python 字典类型转换为 JSON 对象 data = { 'no' : 1, 'name' : 'Runoob', 'url' : 'http://www.runoo ...

  3. 日期控件 My97DatePicker WdatePicker 日期格式

    WdatePicker()只显示日期 WdatePicker({dateFmt:'yyyy-MM-dd HH:mm:ss'})显示日期和时间 WdatePicker({dateFmt:'yyyy-MM ...

  4. 第04项目:淘淘商城(SpringMVC+Spring+Mybatis) 的学习实践总结【第四天】

    https://pan.baidu.com/s/1bptYGAb#list/path=%2F&parentPath=%2Fsharelink389619878-229862621083040 ...

  5. LeetCode No.157,158,159

    No.157 Read 用 Read4 读取 N 个字符 题目 给你一个文件,并且该文件只能通过给定的 read4 方法来读取,请实现一个方法使其能够读取 n 个字符. read4 方法: API r ...

  6. swift中的category,扩展

    1.创建选择 :swift file 2.名称:UIBarButtonItem-Extension 3.category,便利构造函数 extension UIColor { /* 1.extensi ...

  7. [LC] 102. Binary Tree Level Order Traversal

    Given a binary tree, return the level order traversal of its nodes' values. (ie, from left to right, ...

  8. [LC] 110. Balanced Binary Tree

    Given a binary tree, determine if it is height-balanced. For this problem, a height-balanced binary ...

  9. JAVA单例模式的几种写法

    /** * 单例模式懒汉式(双重检锁线程安全.JDK1.5之后) */ public class Singleton { private static volatile Singleton singl ...

  10. ospf实验二

    R1,R2,R3为17.1.1.0网段 1. R4先做rip #rip 1 #version 2 #undo sum.. #netwokr 14.0.0.0 实验第四条 标记tag 100 在R4上做 ...