安卓进阶系列-07数据库框架(GreenDAO)的使用
生活随笔
收集整理的這篇文章主要介紹了
安卓进阶系列-07数据库框架(GreenDAO)的使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
GreenDAO的使用
- 簡介
- 安卓提供了一個占用內存極小的數據庫SQLite,也提供了不少操作數據庫的API,然而不是所有程序員都擅長編寫SQL語句,這時一個ORM的數據庫框架就顯得很好用了。
- 在之前的博客我已經提到了LitePal的使用,但是實際開發中使用的LitePal的項目并不多,相反很多時候GreenDAO是一個不錯的選擇。
- 當然,現在的開發很多至關重要的用戶數據都是部署在服務器上的大型數據庫中,但是即使如此也有很多不方便遠程部署的對象需要本地數據庫來存儲,對SQLite的操作就比較重要了。
- 特點
- 性能最大化,可能是Android平臺上最快的ORM框架
- 易于使用的API
- 最小的內存開銷
- 依賴體積小
- 支持數據庫加密
- 強大的社區支持
- 使用
- 配置
- Project下的build.gradle修改如下
- repositories項中添加一句
- mavenCentral()//add repository
- dependencies項中添加一句
- classpath 'org.greenrobot:greendao-gradle-plugin:3.2.0' //add plugin
- repositories項中添加一句
- app下的build.gradle修改
- 頂部添加一個plugin的應用
- apply plugin: 'org.greenrobot.greendao'//apply plugin
- dependencies項中添加一句
- implementation 'org.greenrobot:greendao:3.2.0'//add library
- 頂部添加一個plugin的應用
- app下的build.gradle中添加一項如下
- greendao{schemaVersion 1 // 數據庫版本號daoPackage 'com.zc.greendao'//greenDao 自動生成的代碼保存的包名targetGenDir 'src/main/java' //自動生成的代碼存儲的路徑,默認是 build/generated/source/greendao.generateTests false //true的時候自動生成測試單元//targetGenDirTests: src/androidTest/java //測試單元的生成目錄}
- Project下的build.gradle修改如下
- 使用
- 編寫實體類對應一個表
- 代碼見GitHub
- 在Entity中可以配置很多信息
- schema:當前實體屬于哪個數據庫
- active:標記一個實體處于活躍狀態,活動實體有更新、刪除和刷新方法
- nameInDb:在數據庫中使用的別名,默認使用的是實體的類名
- indexes:定義索引,可以跨越多個列
- createInDb:標記創建數據庫表
- Make Project會生成相關代碼在指定位置(具體一句上面的greendao項設置)
- DaoMaster
- greenDao的入口,持有數據庫對象并且管理數據庫的DAO類。持有靜態的創建于刪除表的方法。內部類OpenHelper以及DevOpenHelper實現了SQLiteOpenHelper,創建了數據庫模式(Schema),進行數據庫連接。
- DaoSession
- 管理特定模式的所有可用的DAO對象,通過getter方法可以獲取到DAO對象。提供了增刪查改實體的方法。
- DAOs
- 全稱Data access Objects,數據訪問對象,對于每一個實體類,greenDao生成一個DAO,持有很多持久性的方法,例如count,loadAll以及insertInTx。如圖,生成了Teacher類的Dao。
- DaoMaster
- 初始化以及增刪查改
- 這里為了演示方便均在MainActivity中進行。
- 初始化數據庫。一般在Application類中進行,且只進行一次。(關于Application類的創建使用不介紹。
- 代碼見MainActivity.java。
- 插入
- insert(Teacher entity)
- 插入一個實體記錄到數據庫。
- 注意,id傳入long型,傳入null則默認自增長。
- 代碼見MainActivity.java。
- insert(Teacher entity)
- 刪除
- deleteBykey(Long key)
- 根據主鍵刪除一條記錄。
- delete(Teacher entity)
- 根據實體類刪除一條記錄,一般結合查詢方法,查詢出一條記錄的對象之后刪除。
- deleteAll()
- 刪除所有記錄。
- 代碼見MainActivity.java。
- deleteBykey(Long key)
- 查詢
- loadAll()
- 查詢所有記錄
- load(Long key)
- 根據主鍵查詢一條記錄
- queryBuilder().list()
- 返回一個List
- queryBuilder().where(TeacherDao.Properties.Name.eq("")).list()
- 返回一個List
- queryRaw(String where,String selectionArg)
- 返回一個List
- loadAll()
- 修改
- update(Teacher entity)
- 根據對象更新一條記錄
- update(Teacher entity)
- 編寫實體類對應一個表
- 配置
- 補充說明
- 具體完整項目代碼見我的GitHub,歡迎star或者fork
總結
以上是生活随笔為你收集整理的安卓进阶系列-07数据库框架(GreenDAO)的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 安卓进阶系列-06数据库框架(LiteP
- 下一篇: 安卓入门系列-01开发工具Android