什么是DBFlow?

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

1、环境配置

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

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

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

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

2.初始化DBFlow

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

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


3、创建数据库:

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

4、创建数据库表:

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

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


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

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


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

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

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. eureka学习之二:自我保护机制

    提供者和消费者:消费者通过注册服务名称,找rpc远程地址,调用提供者的接口 Eureka的自我保护机制:

  2. Python—守护进程管理工具(Supervisor)

    一.前言简介 1.Supervisor 是一个 Python 开发的 client/server 系统,可以管理和监控类 UNIX 操作系统上面的进程.可以很方便的用来启动.重启.关闭进程(不仅仅是 ...

  3. 协议(Protocol)

    协议(Protocol)的基本概念 协议的声明看起来比较类似于Java中一个类的接口,但是和接口不同的是:协议没有父类也不能定义实例变量. 协议是一种特殊的程序设计结构,用于声明专门被别的类实现的方法 ...

  4. React 通过注释自动生成文档

    最近找了一些文档的生成工具,结果发现了这个 React Styleguidist 可以通过注释,自动生成对应的文档,对于 react 库来说十分方便 安装 npm i -D react-stylegu ...

  5. 吴裕雄--天生自然TensorFlow高层封装:使用TensorFlow-Slim处理MNIST数据集实现LeNet-5模型

    # 1. 通过TensorFlow-Slim定义卷机神经网络 import numpy as np import tensorflow as tf import tensorflow.contrib. ...

  6. 吴裕雄--天生自然 PYTHON3开发学习:OS 文件/目录方法

    import os, sys # 假定 /tmp/foo.txt 文件存在,并有读写权限 ret = os.access("/tmp/foo.txt", os.F_OK) prin ...

  7. day55-mysql-用户权限、修改秘密、忘记密码

    .用户权限:新创建的用户没有库,如果想让新用户访问我的库,必须给它授权才可以.我在使用的navicat要关闭新用户的连接才可以授权给它. .创建用户 '; -- 创建用户 .移除用户 drop use ...

  8. Uber坚持不盈利,葫芦里到底卖的是什么药?

    近日,据媒体报道在美国科罗拉多州阿斯彭举办的<财富>科技头脑风暴大会上,Uber CEO达拉·科斯罗萨西表示,Uber无需在2019年下半年上市计划实施前保持盈利状态. 首先要明确一点的是 ...

  9. Python数据分析与展示第3周学习笔记(北京理工大学 嵩天等)

    入门学习马上结束辽. 1.Pandas库 import pandas as pd 两个数据类型:Series,DataFrame Series类型:数据+索引 自定义索引 b = pd.Series( ...

  10. WMS出库单重复

    发货通知单?WMS备货单选项勾选 不自动复制?新增?