Android bdflow数据库神器的使用

 更新时间:2018年03月29日 09:29:07   作者:WilliamIT  
这篇文章主要介绍了Android bdflow数据库神器的使用,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧

今日观看别人源码的时候偶然间发现了一个很好用的数据库神器,在这里分享一下。

什么是dbflow?

dbflow是Android SQLite ORM的一个使用注解操控的工具库。简单说就是对sqlite数据库进行操作的一个java库。

ORM(Object-relational mapping),中文翻译为对象关系映射,是一种为了解决面向对象与关系数据库存在的互不匹配的现象的技术。简单的说,ORM是通过使用描述对象和数据库之间映射的元数据,将程序中的对象自动持久化到关系数据库中。

为什么使用dbflow?

1、 速度

基于AnnotationProcessing(注解处理器),在编译时生成代码,运行时性能优良,通过复用对象以及缓存机制,得到不错的速度体验。

2、 扩展性

数据表单映射到数据对象,通过该对象继承Model类,一般的话继承BaseModel类就可以,对类内成员添加注解生成所需要的表单。

3、 查询语句

如果你使用过greenDao等其他的库的话,查询语句都非常接近SQL语句。

4、 基于sqlite

不限制平台,有sqlite的地方就可以使用dbflow。

5、 开源

源码是个好东西,有能力的人可以看看。https://github.com/Raizlabs/DBFlow

怎么使用dbflow

配置环境

不管是想学习什么东西,环境就是个主要东西,那对于一个三方库来说第一步就是导入类库。

首先在主要的build.gradle中添加maven地址:

allprojects {
 repositories {
     maven { url "https://jitpack.io" } }
}

其次在基类module中添加依赖:

复制代码 代码如下:

def dbflow_version = "4.2.4" dependencies {     annotationProcessor "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}" compile "com.github.Raizlabs.DBFlow:dbflow-rx2:${dbflow_version}" compile "com.github.Raizlabs.DBFlow:dbflow-sqlcipher:${dbflow_version}" }

如果需要添加kotlin的代码的话查看上文的源码地址下方有说明。

使用

在Application中添加init

FlowManager.*init*(this);

创建数据库

@Database(name = DbFlowData.*DBNAME*,version = DbFlowData.*VERSION*) 
public class DbFlowData {
 public static final String *DBNAME*="DbFlowData";
 public static final int *VERSION*=1; 
}

使用注解Database,name数据库名称 version数据库版本

创建表单

@Table(database = DbFlowData.class)
 public class DbFlowModel extends BaseModel { 
@PrimaryKey(autoincrement = true) public int id; 
@Column public String name;

 public int getId() { return id; } 
public void setId(int id) { this.id = id; } 
public String getName() { return name; } 
public void setName(String name) { this.name = name; }

}

使用注解Table database从属数据库对象,表单属性使用各类注解,PrimaryKey主键,Colum列。

注意:这里我们继承的 BaseModel 是 DBFlow 给我们提供的,是可以不继承的,差别仅仅增删改查的操作上有所不同。

创建完后,点击Build->make,会在..\build\generated\source\apt\debug下生成必要代码。

插入:

创建一个表单对象,赋值完,调用save方法即可插入操作。

复制代码 代码如下:
DbFlowModel dbFlowModel = new DbFlowModel(); dbFlowModel.name = name; dbFlowModel.save();

删除:

类似于sql语句的代码进行操作

SQLite.*delete*()
 .from(DbFlowModel.class)
 .where(DbFlowModel_Table.*id*.eq(id), DbFlowModel_Table.*name*.eq(name))
 .execute();

查询:

这个有很多复杂的查询操作,想知道详细的还是看官方文档。

复制代码 代码如下:
List<DbFlowModel> list = SQLite.*select*().from(DbFlowModel.class).queryList();

更新:

都是类似的。

SQLite.*update*(DbFlowModel.class)
 .set(DbFlowModel_Table.*name*.eq("PXXXX"))
 .where(DbFlowModel_Table.*name*.eq("P0000"))
 .execute();

注意:新建表单后,需要对数据库的version进行升级,不然会报错的。

这里主要简单的介绍一下dbflow的基本使用,主要用作分享和记录一些好用的东西,

源码:https://github.com/xiaogoudandan/WilliamApp

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • java返回json请求中文变成问号的问题及解决

    java返回json请求中文变成问号的问题及解决

    这篇文章主要介绍了java返回json请求中文变成问号的问题及解决方案,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-07-07
  • Java匿名内部类的使用方法举例详解

    Java匿名内部类的使用方法举例详解

    Java中的匿名内部类是一种没有名字的局部内部类,主要用于一次性实现接口或继承类的场合,它们常见于GUI事件处理、多线程编程等场景,简化代码结构同时提高开发效率,需要的朋友可以参考下
    2024-09-09
  • JavaWeb组件Servlet使用实例解析

    JavaWeb组件Servlet使用实例解析

    这篇文章主要介绍了JavaWeb组件Servlet使用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • Java 覆盖equals时总要覆盖hashcode

    Java 覆盖equals时总要覆盖hashcode

    这篇文章主要介绍了Java 覆盖equals时总要覆盖hashcode的相关资料,这里附有实例代码,具有参考价值,需要的朋友可以参考下
    2016-12-12
  • IntelliJ IDEA 2020.3 重大特性(新功能一览)

    IntelliJ IDEA 2020.3 重大特性(新功能一览)

    这篇文章主要介绍了IntelliJ IDEA 2020.3 重大特性(新功能一览),本文通过图文并茂的形式给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-12-12
  • 浅析java 循序与二元搜索算法

    浅析java 循序与二元搜索算法

    这篇文章主要简单介绍了java 循序与二元搜索算法,需要的朋友可以参考下
    2015-02-02
  • 使用session实现简易购物车功能

    使用session实现简易购物车功能

    这篇文章主要为大家详细介绍了使用session实现简易购物车功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • springSecurity实现简单的登录功能

    springSecurity实现简单的登录功能

    这篇文章主要为大家详细介绍了springSecurity实现简单的登录功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-09-09
  • 解决一个JSON反序列化问题的办法(空字符串变为空集合)

    解决一个JSON反序列化问题的办法(空字符串变为空集合)

    在平时的业务开发中,经常会有拿到一串序列化后的字符串要来反序列化,下面这篇文章主要给大家介绍了如何解决一个JSON反序列化问题的相关资料,空字符串变为空集合,需要的朋友可以参考下
    2024-03-03
  • Java的Spring框架中AOP项目的一般配置和部署教程

    Java的Spring框架中AOP项目的一般配置和部署教程

    这篇文章主要介绍了Java的Spring框架中AOP项目的一般配置和部署教程,AOP面向方面编程的项目部署结构都比较类似,因而也被看作是Spring的一种设计模式使用,需要的朋友可以参考下
    2016-04-04

最新评论