什么是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. 计量经济与时间序列_滞后算子和超前算子L的定义

    1.   为了使计算简单,引入滞后算子的概念: 2.   定义LYt = Yt-1 , L2Yt = Yt-2,... , LsYt = Yt-s. 3.   也就是把每一期具体滞后哪一期的k提到L的 ...

  2. 《C程序设计(第四版)》小记

    我看的这本书很经典,它是谭浩强写的,也就是广为流传的“C语言红皮书”.在网上看了很多帖子,生活中也问过一些朋友,大多数人是不认可这本书的.很多人都说这本书很烂,看不懂,然后去“追逐”国外的一些教材.其 ...

  3. 吴裕雄--天生自然python Google深度学习框架:Tensorflow实现迁移学习

    import glob import os.path import numpy as np import tensorflow as tf from tensorflow.python.platfor ...

  4. 900B. Position in Fraction#分数位置(模拟)

    题目出处:http://codeforces.com/problemset/problem/900/B 题目大意:找到一个数字在小数部分中第一次出现的位置 #include<iostream&g ...

  5. [USACO09OCT]谷仓里的回声Barn Echoes(hush、STL)

    https://www.luogu.org/problem/P2957 题目描述 The cows enjoy mooing at the barn because their moos echo b ...

  6. Qt HWND的句柄与QWidget的转换

    QT中用到HWND的句柄在编程中遇到了问题,第三方API用了hwnd类型做形参,但是QT中又没有该类型,可以做如下操作来解决问题. 在.h中先声明: HWND m_hWnd; 再声明 public: ...

  7. 70-persistent-net.rules无法自动生成,解决方法

    无法自动生成70-persistent-net.rules文件的原因: 在更换linux内核前修改ifcfg-eth0文件,更换内核,使用dhclient无法动态分配IP,删掉70-persisten ...

  8. [LC] 110. Balanced Binary Tree

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

  9. getRandomInt getRandomString

    import java.util.concurrent.ThreadLocalRandom; private static final String AB = "ABCDEFGHIJKLMN ...

  10. HDU-1251-统计难题(Trie树)(BST)(AVL)

    字典树解法(Trie树) Accepted 1251 156MS 45400K 949 B C++ #include"iostream" #include"cstdlib ...