日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android高性能ORM数据库DBFlow入门

發布時間:2024/7/23 Android 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android高性能ORM数据库DBFlow入门 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

DBFlow,綜合了 ActiveAndroid, Schematic, Ollie,Sprinkles 等庫的優點。同時不是基于反射,所以性能也是非常高,效率緊跟greenDAO其后。基于注解,使用apt技術,在編譯過程中生成操作類,使用方式和ActiveAndroid高度相似,使用簡單。

特性:

1、無縫支持多個數據庫;

2、使用annotation processing提高速度;

3、ModelContainer類庫可以直接解析像JSON這樣的數據;

4、增加靈活性的豐富接口。

github倉庫:https://github.com/Raizlabs/DBFlow

DBFlow在國內可能用的人不是很多,所以中文介紹很少,所以就有了這篇文章,接下來就讓我們一起學習DBFlow。

一、引入依賴、初始化

需要引入apt和maven,配置項目的 build.gradle

buildscript {repositories {jcenter()}dependencies {classpath 'com.android.tools.build:gradle:2.0.0-beta6'classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'} }allprojects {repositories {jcenter()maven { url "https://jitpack.io" }} }

配置app的build.gradle

apply plugin: 'com.android.application' apply plugin: 'com.neenbedankt.android-apt' def dbflow_version = "3.0.0-beta4" android {compileSdkVersion 23buildToolsVersion "23.0.2"defaultConfig {applicationId "cn.taoweiji.dbflowexample"minSdkVersion 14targetSdkVersion 23versionCode 1versionName "1.0"}buildTypes {release {minifyEnabled falseproguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'}} }dependencies {compile fileTree(dir: 'libs', include: ['*.jar'])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}" }

需要在Application的onCreate對DBFlow進行初始化

public class MyApplication extends Application {@Overridepublic void onCreate() {super.onCreate();FlowManager.init(this);} }

記得修改AndroidManifest.xml

<applicationandroid:name=".MyApplication" ../>

二、數據庫創建、表創建

定義數據庫

我這里定義了一個名稱叫做AppDatabase的數據庫,可以根據自己的喜歡進行定義。

@Database(name = AppDatabase.NAME, version = AppDatabase.VERSION) public class AppDatabase {//數據庫名稱public static final String NAME = "AppDatabase";//數據庫版本號public static final int VERSION = 1; }

創建數據庫對象

必須繼承BaseModel,BaseModel包含了基本的數據庫操作(save、delete、update、insert、exists),看下面代碼可以發現這個表是關聯上面定義的數據庫,People的id是自增的id。

@ModelContainer @Table(database = AppDatabase.class) public class People extends BaseModel {//自增ID@PrimaryKey(autoincrement = true)public Long id;@Columnpublic String name;@Columnpublic int gender; }

編寫完數據表對象后,點擊Android studio的build->Make Project(Mac的童鞋直接command+F9)就會使用apt進行了編譯,

查看目錄(我的people類放在cn.taoweiji.dbflowexample.db)

app/build/generated/source/apt/debug/cn/taoweiji/dbflowexample/db

就可以看到自動生成 People_Adapter、People_Container、People_Table,其中People_Table在后面使用有很大的作用,建議詳細看看它的結構。

注意

如果配置好了后,Make Project后,卻沒有生成_Table, GeneratedDatabaseHolder, _DataBase, _Adapter等,檢查都無誤后,可以檢查一下:

android {compileSdkVersion 23buildToolsVersion "23.0.2"}

參考鏈接:體驗Android ORM之DBFlow - 漫漫求學中的孩兒 - 博客頻道 - CSDN.NET

三、增刪改

由于數據表對象繼承了BaseModel,已經包含了很多的操作

People people = new People(); people.name = "Wiki"; people.gender = 1; people.save(); //people.update(); //people.delete(); Log.e("Test", String.valueOf(people.id));

刪除、更新等操作就自己體驗,這里就不多說了。

四、查詢

//返回所有查詢結果 List<People> peoples = new Select().from(People.class).queryList(); //返回單個查詢結果 People people = new Select().from(People.class).querySingle(); //查詢gender = 1的所有People List<People> peoples2 = new Select().from(People.class).where(People_Table.gender.eq(1)).queryList(); DBFlow的查詢方式借鑒ActiveAndroid的,但是比ActiveAndroid功能還要強大。

四、事務、批量保存

事務是一個數據必須具備的,如果保存10000條數據,一條一條保存必然是很慢的,所以就需要用到事務,批量保存。DBFlow的事務非常的強大,同時使用也很復雜,這里就簡單介紹批量保存,更多內容請查看官方文檔

https://github.com/Raizlabs/DBFlow/blob/master/usage/Transactions.md

List<People> peoples = new ArrayList<>(); for (int i = 0; i < 1000; i++) {People people = new People();people.name = "Wiki";people.gender = 1;peoples.add(people); } //實時保存,馬上保存 new SaveModelTransaction<>(ProcessModelInfo.withModels(peoples)).onExecute(); //異步保存,使用異步,如果立刻查詢可能無法查到結果 //TransactionManager.getInstance().addTransaction(new SaveModelTransaction<>(ProcessModelInfo.withModels(peoples)));

五、數據庫升級(增加表、增加字段等)

如果是新增表無需做特別的處理,直接修改AppDatabase的版本號即可。

如果需要新增字段,除了需要修改AppDatabase的版本號外,還需要做特殊的處理,DBFlow的描述是:Migrations。

例子:對People新增一個email字段

第1步,修改數據庫版本號

@Database(name = AppDatabase.NAME, version = AppDatabase.VERSION) public class AppDatabase {//數據庫名稱public static final String NAME = "AppDatabase";//數據庫版本號,這里修改2public static final int VERSION = 2; }

第2步,需要修改數據表對象結構,增加email

@ModelContainer @Table(database = AppDatabase.class) public class People extends BaseModel {//自增ID@PrimaryKey(autoincrement = true)public Long id;@Columnpublic String name;@Columnpublic int gender;@Columnpublic String email; }

第3步,執行第二步之后,需要build(Android studio的build->Make Project、Mac的童鞋直接command+F9),通過apt更新People_Table,接下來編寫Migrations

@Migration(version = 2, database = AppDatabase.class) public class Migration_2_People extends AlterTableMigration<People> {public Migration_2_People(Class<People> table) {super(table);}@Overridepublic void onPreMigrate() {addColumn(SQLiteType.TEXT, People_Table.email.getNameAlias().getName());} }

類名可以更加自己喜歡定義,我個人的規則是,按照數據庫版本號和需要更新的數據表來命名,需要注意是:version = 2

數據庫升級就大功告成了。

總結:這篇文章只是簡單介紹了DBFlow的基本功能使用,DBFlow還有很多很厲害的功能,比如多數據庫支持、Powerful Model Caching等,而且還支持Kotlin語言(運行在Java虛擬機的新語言)。我只使用過greenDAO、activeAndroid、afinal、DBFlow數據庫,所以在我看來,DBFlow是我用過的數據庫當中最好用的數據庫,性能也很好,使用非常簡單,高度推薦。

我在github上共享一下DBFlow的配置

https://github.com/taoweiji/DBFlowExample

原文鏈接

Android高性能ORM數據庫DBFlow入門 - 陶偉基Wiki - 博客園

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的Android高性能ORM数据库DBFlow入门的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人精品一区二区三区视频 | 国产美女一区二区三区 | 深爱五月激情网 | 国产看片网站 | 日韩女同互慰一区二区 | 黑人操亚洲女人 | 特黄aaaaaa私密按摩 | 色成人综合网 | 国产伦精品一区二区三区免费 | 日本高清视频在线播放 | 高跟肉丝丝袜呻吟啪啪网站av | 视频1区2区 | 怡红院一区二区三区 | 中文字幕人妻一区二区在线视频 | 亚洲影视一区二区 | 亚洲在线观看一区二区 | 欧美激情自拍 | 婷婷视频一区二区三区 | 久久久久99精品成人片试看 | 日本高清xxx | 人人干免费 | 偷拍视频一区 | 亚洲av毛片成人精品 | 欧洲黄色网 | 久久av秘一区二区三区 | 男人喷出精子视频 | 三级4级全黄60分钟 成人自拍视频 | 国产ts人妖系列高潮 | 一本一道人人妻人人妻αv 九一在线视频 | 成人夜视频 | 夜夜欢视频 | 日产精品久久久 | 黑人玩弄人妻一区二区三区影院 | 欧美黄色大片视频 | 伊人激情综合网 | 美女被出白浆 | 成人精品在线看 | 97人妻精品一区二区三区软件 | 久久亚洲综合 | 蜜桃色一区二区三区 | 女人久久久久 | 久操视频免费在线观看 | 亚洲第一黄网 | av人人干 | 都市激情亚洲一区 | 野花视频在线观看免费 | www久久| 少妇又白又嫩又色又粗 | 97成人精品视频在线观看 | 韩国美女主播跳舞 | 国产精品99久久久久久久久久久久 | 加勒比视频在线观看 | av中文在线资源 | 粉嫩av一区二区白浆 | 特黄a级片 | 丰满大乳少妇在线观看网站 | 台湾一级视频 | 超碰人人搞 | 黄色大片网址 | 久久久久久久久久久久久久久久久久久久 | 中文文字幕一区二区三三 | 91大奶 | 老妇女玩小男生毛片 | 一本高清dvd在线播放 | 欧美亚洲另类在线 | 日韩一区二区三区三四区视频在线观看 | 豆花视频成人 | 免费一二三区 | 天天看夜夜爽 | 六月丁香综合 | 国产高清免费在线观看 | 日韩黄网 | 荫道bbwbbb高潮潮喷 | 精品一区二三区 | 欧美乱妇15p | 国产成人精品一区二区三区在线 | 操操插插 | 非洲黄色大片 | 国产精品久久久久久久久久妞妞 | 羽月希奶水一区二区三区 | 亚洲美女偷拍 | 久久日视频 | 涩涩网站免费 | 成色视频 | 亚洲人体视频 | 中文字幕乱码人妻一区二区三区 | 2017狠狠干 | 精品视频99| 亚洲欧美成人一区二区 | 牛牛电影国产一区二区 | 亚洲人精品午夜射精日韩 | 中国少妇高潮 | 亚洲18在线看污www麻豆 | 日本一区二区免费视频 | 麻豆md0034在线观看 | 日本一区免费视频 | 亚洲第一色站 | 亚洲影视一区二区三区 | 天天插日日插 |