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

官網上的介紹,greenDAO 是一個將對象映射到 SQLite 數據庫中的輕量且快速的 ORM 解決方案。(greenDAO is a light & fast ORM solution that maps objects to SQLite databases.)
GreenDao特點
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//數據庫版本號
daoPackage 'com.com.sky.downloader.greendao'//設置DaoMaster、DaoSession、Dao包名
targetGenDir 'src/main/java'//設置DaoMaster、DaoSession、Dao目錄
//targetGenDirTest:設置生成單元測試目錄
//generateTests:設置自動生成單元測試用例
}

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

GreenDao的基本配置就已經完成了,下面我們編寫一個實體類。
實體類User
@Entity
public class User {
@Id(autoincrement = true)
private Long id;
private String name;
private int age;
}
相關注解說明:
實體@Entity注解
schema:告知GreenDao當前實體屬於哪個schema
active:標記一個實體處於活躍狀態,活動實體有更新、刪除和刷新方法
nameInDb:在數據庫中使用的別名,默認使用的是實體的類名
indexes:定義索引,可以跨越多個列
createInDb:標記創建數據庫表
基礎屬性注解
@Id:主鍵 Long 型,可以通過@Id(autoincrement = true)設置自增長
@Property:設置一個非默認關系映射所對應的列名,默認是使用字段名,例如:@Property(nameInDb = "name")
@NotNull:設置數據庫表當前列不能為空
@Transient:添加此標記後不會生成數據庫表的列
索引注解
@Index:使用@Index作為一個屬性來創建一個索引,通過name設置索引別名,也可以通過unique給索引添加約束
@Unique:向數據庫添加了一個唯一的約束
關系注解
@ToOne:定義與另一個實體(一個實體對象)的關系
@ToMany:定義與多個實體對象的關系
當我們編寫好實體類並添加自己需要的注解之後,點擊Make Project或者Make Module 'app',就會項目的build目錄下或者自己設定的目錄下看到生成的三個類文件:
後面的數據庫操作需要借助這三個類來進行,同時在我們的實體類中自動生成了各個屬性的get、set方法。

初始化GreenDao
一般建議在Application中初始化數據庫

DevOpenHelper有兩個重載方法:
context上下文這個不用多說,name數據庫的名字,cursorFactory游標工廠,一般不用,傳入null或者使用兩個參數的方法即可。我們對外提供一個getDaoSession()的方法供外部使用。
增
注意:Long型id,如果傳入null,則GreenDao會默認設置自增長的值。

刪

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

查
總結
至此,GreenDao的基本使用方法就這些了,後面還有一些關於數據的升級等問題,後面再具體介紹。
以上就是本文的全部內容,希望本文的內容對大家的學習或者工作能帶來一定的幫助,同時也希望多多支持本站!
Android 自定義View練習:雷達圖(比重)繪制
code:package com.louisgeek.louiscustomviewstudy;import android.content.Context;import
Android程序開發之Fragment實現底部導航欄實例代碼
流行的應用的導航一般分為兩種,一種是底部導航,一種是側邊欄。說明IDE:AS,Android studio;模擬器:genymotion;實現的效果,見下圖。具體實現為了
Android基於IIS的APK下載(四)數據下載
在《Android基於IIS的APK下載(三)用JSON傳輸更新數據》一文中已經從服務器中拿到了更新數據,並且呈現到了UI中,結合前面的文章及效果圖(參見下圖),可以看到
自定義控件(二)
多點觸控事件簡單介紹最關鍵的是onTouchEvent這個方法明天應該就會繼續介紹比這要更加多的於事件相關的,比如事件分發等,今天是簡單的事件,不多說,如下:單指 4個動