最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

GreenDao 3.2.0 的基本使用

 更新時(shí)間:2017年01月19日 09:48:42   作者:tonycheng93  
本文主要對(duì)GreenDao 3.2.0 的基本使用進(jìn)行詳細(xì)介紹。具有一定的參考價(jià)值,下面跟著小編一起來看下吧

前言

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

GreenDao簡(jiǎn)介

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

GreenDao特點(diǎn)

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

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

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ù)庫(kù)版本號(hào) 
  daoPackage 'com.com.sky.downloader.greendao'//設(shè)置DaoMaster、DaoSession、Dao包名 
  targetGenDir 'src/main/java'//設(shè)置DaoMaster、DaoSession、Dao目錄 
  //targetGenDirTest:設(shè)置生成單元測(cè)試目錄 
  //generateTests:設(shè)置自動(dòng)生成單元測(cè)試用例
}

上述配置是可選項(xiàng),如果不配置,則默認(rèn)生成在build下:

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

實(shí)體類User

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

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

實(shí)體@Entity注解

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

active:標(biāo)記一個(gè)實(shí)體處于活躍狀態(tài),活動(dòng)實(shí)體有更新、刪除和刷新方法

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

indexes:定義索引,可以跨越多個(gè)列

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

基礎(chǔ)屬性注解

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

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

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

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

索引注解

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

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

關(guān)系注解

@ToOne:定義與另一個(gè)實(shí)體(一個(gè)實(shí)體對(duì)象)的關(guān)系

@ToMany:定義與多個(gè)實(shí)體對(duì)象的關(guān)系

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

  • DaoMaster
  • DaoSession
  • UserDao

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

初始化GreenDao

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

DevOpenHelper有兩個(gè)重載方法:

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

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

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

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

  • deleteBykey(Long key) :根據(jù)主鍵刪除一條記錄。
  • delete(User entity) :根據(jù)實(shí)體類刪除一條記錄,一般結(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ù)的升級(jí)等問題,后面再具體介紹。

以上就是本文的全部?jī)?nèi)容,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作能帶來一定的幫助,同時(shí)也希望多多支持腳本之家!

相關(guān)文章

最新評(píng)論

靖西县| 阳东县| 化州市| 启东市| 久治县| 中阳县| 沽源县| 富锦市| 满城县| 合阳县| 新和县| 万盛区| 祁阳县| 土默特左旗| 银川市| 都昌县| 乌拉特中旗| 富民县| 鄱阳县| 乌鲁木齐县| 贵南县| 太康县| 南陵县| 金沙县| 来安县| 永寿县| 崇左市| 女性| 黄石市| 应用必备| 莱芜市| 泰来县| 分宜县| 盐源县| 酒泉市| 什邡市| 米林县| 青海省| 渑池县| 滨州市| 宜丰县|