国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Android > 正文

GreenDao 3.2.0 的基本使用

2019-12-12 03:59:24
字體:
供稿:網(wǎng)友

前言

Android開發(fā)中我們或多或少都會接觸到數(shù)據(jù)庫。Android中提供了一個占用內(nèi)存極小的關(guān)系型數(shù)據(jù)庫-SQLite。雖然Android系統(tǒng)中提供了許多操作SQLite的API,但是我們還是需要手動去編寫SQL語句,這經(jīng)常會出現(xiàn)一些莫名其妙的問題(😂,不要問我為什么)。所以便出現(xiàn)了許多ORM(對象關(guān)系映射)框架。其中比較著名的有GreenDao、OrmLite、Litepal等。下面主要介紹一下GreenDao,我平時用的最多的也是GreenDao。

GreenDao簡介

官網(wǎng)上的介紹,greenDAO 是一個將對象映射到 SQLite 數(shù)據(jù)庫中的輕量且快速的 ORM 解決方案。(greenDAO is a light & fast ORM solution that maps objects to SQLite databases.)

GreenDao特點

  • 性能最大化,可能是Android平臺上最快的ORM框架
  • 易于使用的API
  • 最小的內(nèi)存開銷
  • 依賴體積小
  • 支持數(shù)據(jù)庫加密
  • 強大的社區(qū)支持

GreenDao有如此多的有點,我們還有什么理由不去使用它呢。

GreenDao配置

在build.gradle(Module:app)中添加下面代碼:

buildscript {   repositories {    mavenCentral()  }  dependencies {    classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1'   } } apply plugin: 'org.greenrobot.greendao' dependencies {   compile 'org.greenrobot:greendao:3.2.0' }

其他配置

在build.gradle(Module:app)中添加:

greendao {   schemaVersion 1//數(shù)據(jù)庫版本號   daoPackage 'com.com.sky.downloader.greendao'//設(shè)置DaoMaster、DaoSession、Dao包名   targetGenDir 'src/main/java'//設(shè)置DaoMaster、DaoSession、Dao目錄   //targetGenDirTest:設(shè)置生成單元測試目錄   //generateTests:設(shè)置自動生成單元測試用例}

上述配置是可選項,如果不配置,則默認生成在build下:

GreenDao的基本配置就已經(jīng)完成了,下面我們編寫一個實體類。

實體類User

 @Entity public class User {   @Id(autoincrement = true)   private Long id;   private String name;   private int age;}

相關(guān)注解說明:

實體@Entity注解

schema:告知GreenDao當(dāng)前實體屬于哪個schema

active:標記一個實體處于活躍狀態(tài),活動實體有更新、刪除和刷新方法

nameInDb:在數(shù)據(jù)庫中使用的別名,默認使用的是實體的類名

indexes:定義索引,可以跨越多個列

createInDb:標記創(chuàng)建數(shù)據(jù)庫表

基礎(chǔ)屬性注解

@Id:主鍵 Long 型,可以通過@Id(autoincrement = true)設(shè)置自增長

@Property:設(shè)置一個非默認關(guān)系映射所對應(yīng)的列名,默認是使用字段名,例如:@Property(nameInDb = "name")

@NotNull:設(shè)置數(shù)據(jù)庫表當(dāng)前列不能為空

@Transient:添加此標記后不會生成數(shù)據(jù)庫表的列

索引注解

@Index:使用@Index作為一個屬性來創(chuàng)建一個索引,通過name設(shè)置索引別名,也可以通過unique給索引添加約束

@Unique:向數(shù)據(jù)庫添加了一個唯一的約束

關(guān)系注解

@ToOne:定義與另一個實體(一個實體對象)的關(guān)系

@ToMany:定義與多個實體對象的關(guān)系

當(dāng)我們編寫好實體類并添加自己需要的注解之后,點擊Make Project或者Make Module 'app',就會項目的build目錄下或者自己設(shè)定的目錄下看到生成的三個類文件:

  • DaoMaster
  • DaoSession
  • UserDao

后面的數(shù)據(jù)庫操作需要借助這三個類來進行,同時在我們的實體類中自動生成了各個屬性的get、set方法。

初始化GreenDao

一般建議在Application中初始化數(shù)據(jù)庫

DevOpenHelper有兩個重載方法:

  • DevOpenHelper(Context context,String name)
  • DevOpenHelper(Context context,String name,CursorFactory factory)

context上下文這個不用多說,name數(shù)據(jù)庫的名字,cursorFactory游標工廠,一般不用,傳入null或者使用兩個參數(shù)的方法即可。我們對外提供一個getDaoSession()的方法供外部使用。

注意:Long型id,如果傳入null,則GreenDao會默認設(shè)置自增長的值。

  • insert(User entity):插入一條記錄

  • deleteBykey(Long key) :根據(jù)主鍵刪除一條記錄。
  • delete(User entity) :根據(jù)實體類刪除一條記錄,一般結(jié)合查詢方法,查詢出一條記錄之后刪除。
  • deleteAll(): 刪除所有記錄。

update(User entity):更新一條記錄

  • loadAll():查詢所有記錄
  • load(Long key):根據(jù)主鍵查詢一條記錄
  • queryBuilder().list():返回:List
  • queryBuilder().where(UserDao.Properties.Name.eq("")).list():返回:List
  • queryRaw(String where,String selectionArg):返回:List

總結(jié)

至此,GreenDao的基本使用方法就這些了,后面還有一些關(guān)于數(shù)據(jù)的升級等問題,后面再具體介紹。

以上就是本文的全部內(nèi)容,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時也希望多多支持武林網(wǎng)!

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 翼城县| 尖扎县| 称多县| 蒙自县| 安丘市| 柳江县| 新兴县| 汕头市| 盐城市| 于田县| 炉霍县| 罗定市| 石楼县| 蓬安县| 黑山县| 丹江口市| 贺兰县| 莒南县| 五家渠市| 怀柔区| 塔河县| 滕州市| 清丰县| 邓州市| 尼勒克县| 新乡市| 长春市| 花莲市| 雷山县| 松溪县| 温泉县| 五莲县| 丰原市| 壶关县| 时尚| 威信县| 固始县| 东平县| 灵武市| 内江市| 开江县|