欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Android bdflow數(shù)據(jù)庫神器的使用

 更新時(shí)間:2018年03月29日 09:29:07   作者:WilliamIT  
這篇文章主要介紹了Android bdflow數(shù)據(jù)庫神器的使用,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

今日觀看別人源碼的時(shí)候偶然間發(fā)現(xiàn)了一個(gè)很好用的數(shù)據(jù)庫神器,在這里分享一下。

什么是dbflow?

dbflow是Android SQLite ORM的一個(gè)使用注解操控的工具庫。簡單說就是對(duì)sqlite數(shù)據(jù)庫進(jìn)行操作的一個(gè)java庫。

ORM(Object-relational mapping),中文翻譯為對(duì)象關(guān)系映射,是一種為了解決面向?qū)ο笈c關(guān)系數(shù)據(jù)庫存在的互不匹配的現(xiàn)象的技術(shù)。簡單的說,ORM是通過使用描述對(duì)象和數(shù)據(jù)庫之間映射的元數(shù)據(jù),將程序中的對(duì)象自動(dòng)持久化到關(guān)系數(shù)據(jù)庫中。

為什么使用dbflow?

1、 速度

基于AnnotationProcessing(注解處理器),在編譯時(shí)生成代碼,運(yùn)行時(shí)性能優(yōu)良,通過復(fù)用對(duì)象以及緩存機(jī)制,得到不錯(cuò)的速度體驗(yàn)。

2、 擴(kuò)展性

數(shù)據(jù)表單映射到數(shù)據(jù)對(duì)象,通過該對(duì)象繼承Model類,一般的話繼承BaseModel類就可以,對(duì)類內(nèi)成員添加注解生成所需要的表單。

3、 查詢語句

如果你使用過greenDao等其他的庫的話,查詢語句都非常接近SQL語句。

4、 基于sqlite

不限制平臺(tái),有sqlite的地方就可以使用dbflow。

5、 開源

源碼是個(gè)好東西,有能力的人可以看看。https://github.com/Raizlabs/DBFlow

怎么使用dbflow

配置環(huán)境

不管是想學(xué)習(xí)什么東西,環(huán)境就是個(gè)主要東西,那對(duì)于一個(gè)三方庫來說第一步就是導(dǎo)入類庫。

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

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

其次在基類module中添加依賴:

復(fù)制代碼 代碼如下:

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);

創(chuàng)建數(shù)據(jù)庫

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

使用注解Database,name數(shù)據(jù)庫名稱 version數(shù)據(jù)庫版本

創(chuàng)建表單

@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從屬數(shù)據(jù)庫對(duì)象,表單屬性使用各類注解,PrimaryKey主鍵,Colum列。

注意:這里我們繼承的 BaseModel 是 DBFlow 給我們提供的,是可以不繼承的,差別僅僅增刪改查的操作上有所不同。

創(chuàng)建完后,點(diǎn)擊Build->make,會(huì)在..\build\generated\source\apt\debug下生成必要代碼。

插入:

創(chuàng)建一個(gè)表單對(duì)象,賦值完,調(diào)用save方法即可插入操作。

復(fù)制代碼 代碼如下:
DbFlowModel dbFlowModel = new DbFlowModel(); dbFlowModel.name = name; dbFlowModel.save();

刪除:

類似于sql語句的代碼進(jìn)行操作

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

查詢:

這個(gè)有很多復(fù)雜的查詢操作,想知道詳細(xì)的還是看官方文檔。

復(fù)制代碼 代碼如下:
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();

注意:新建表單后,需要對(duì)數(shù)據(jù)庫的version進(jìn)行升級(jí),不然會(huì)報(bào)錯(cuò)的。

這里主要簡單的介紹一下dbflow的基本使用,主要用作分享和記錄一些好用的東西,

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

以上就是本文的全部內(nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Springboot集成SSE實(shí)現(xiàn)單工通信消息推送流程詳解

    Springboot集成SSE實(shí)現(xiàn)單工通信消息推送流程詳解

    SSE簡單的來說就是服務(wù)器主動(dòng)向前端推送數(shù)據(jù)的一種技術(shù),它是單向的,也就是說前端是不能向服務(wù)器發(fā)送數(shù)據(jù)的。SSE適用于消息推送,監(jiān)控等只需要服務(wù)器推送數(shù)據(jù)的場(chǎng)景中,下面是使用Spring Boot來實(shí)現(xiàn)一個(gè)簡單的模擬向前端推動(dòng)進(jìn)度數(shù)據(jù),前端頁面接受后展示進(jìn)度條
    2022-11-11
  • 使用Feign實(shí)現(xiàn)微服務(wù)間文件下載

    使用Feign實(shí)現(xiàn)微服務(wù)間文件下載

    這篇文章主要為大家詳細(xì)介紹了使用Feign實(shí)現(xiàn)微服務(wù)間文件下載,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-04-04
  • springboot如何讀取application.yml文件

    springboot如何讀取application.yml文件

    這篇文章主要介紹了springboot如何讀取application.yml文件的方法,幫助大家更好的理解和使用springboot框架,感興趣的朋友可以了解下
    2020-12-12
  • 解決@PathVariable出現(xiàn)點(diǎn)號(hào).時(shí)導(dǎo)致路徑參數(shù)截?cái)喃@取不全的問題

    解決@PathVariable出現(xiàn)點(diǎn)號(hào).時(shí)導(dǎo)致路徑參數(shù)截?cái)喃@取不全的問題

    這篇文章主要介紹了解決@PathVariable出現(xiàn)點(diǎn)號(hào).時(shí)導(dǎo)致路徑參數(shù)截?cái)喃@取不全的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java與MySQL導(dǎo)致的時(shí)間不一致問題分析

    Java與MySQL導(dǎo)致的時(shí)間不一致問題分析

    在使用MySQL的過程中,你可能會(huì)遇到時(shí)區(qū)相關(guān)問題,本文主要介紹了Java與MySQL導(dǎo)致的時(shí)間不一致問題分析,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-07-07
  • Spring?Boot快速過濾出一次請(qǐng)求的所有日志

    Spring?Boot快速過濾出一次請(qǐng)求的所有日志

    這篇文章主要介紹了Spring?Boot快速過濾出一次請(qǐng)求的所有日志,本文講述了如何使用MDC工具來快速過濾一次請(qǐng)求的所有日志,并通過裝飾器模式使得MDC工具在異步線程里也能生效,需要的朋友可以參考下
    2022-11-11
  • java 如何使用org.w3c.dom操作XML文件

    java 如何使用org.w3c.dom操作XML文件

    這篇文章主要介紹了java 如何使用org.w3c.dom操作XML文件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • Java并發(fā)Map面試線程安全數(shù)據(jù)結(jié)構(gòu)全面分析

    Java并發(fā)Map面試線程安全數(shù)據(jù)結(jié)構(gòu)全面分析

    本文將探討如何在Java中有效地應(yīng)對(duì)這些挑戰(zhàn),介紹一種強(qiáng)大的工具并發(fā)Map,它能夠幫助您管理多線程環(huán)境下的共享數(shù)據(jù),確保數(shù)據(jù)的一致性和高性能,深入了解Java中的并發(fā)Map實(shí)現(xiàn),包括ConcurrentHashMap和ConcurrentSkipListMap,及相關(guān)知識(shí)點(diǎn)
    2023-09-09
  • 詳細(xì)談?wù)凧ava中l(wèi)ong和double的原子性

    詳細(xì)談?wù)凧ava中l(wèi)ong和double的原子性

    原子性是指一個(gè)操作或多個(gè)操作要么全部執(zhí)行,且執(zhí)行的過程不會(huì)被任何因素打斷,要么就都不執(zhí)行,下面這篇文章主要給大家介紹了關(guān)于Java中l(wèi)ong和double原子性的相關(guān)資料,需要的朋友可以參考下
    2021-08-08
  • Spring MVC 啟動(dòng)過程源碼分析詳解

    Spring MVC 啟動(dòng)過程源碼分析詳解

    這篇文章主要介紹了Spring MVC 啟動(dòng)過程源碼分析詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-07-07

最新評(píng)論