Android數據庫GreenDao的使用

簡介

GreenDao 是一個輕量級的對象關系映射(ORM)庫,用于簡化 Android 應用中的數據庫操作。它提供了以下主要功能:

  • 簡化數據庫操作:通過注解定義實體類,GreenDao 自動生成 DAO(數據訪問對象)類,簡化了數據庫的增、刪、改、查操作
  • 高性能:GreenDao 設計目標之一是高效地執行數據庫操作,尤其在處理大量數據時表現出色
  • 自動生成代碼:通過編譯時生成代碼,減少了手動編寫 SQL 和數據處理邏輯的需要
  • 事務支持:支持數據庫事務,確保數據操作的原子性和一致性
  • 靈活性:可以通過自定義查詢和批量操作,滿足復雜的數據處理需求
  • 小巧:庫體積小,適合需要輕量級 ORM 的應用
開發工具集成
  1. 在project的build.gradle下添加classpath 依賴
    dependencies {classpath "com.android.tools.build:gradle:4.2.2"classpath 'org.greenrobot:greendao-gradle-plugin:3.3.0'}

2.在app的build.gradle下添加greendao依賴

dependencies {implementation 'org.greenrobot:greendao:3.3.0'
}greendao {schemaVersion 1daoPackage 'com.example.greendaodemo.dao'targetGenDir 'src/main/java'
}

3.Androidstudio和gradle以及GreenDao版本對應表

開發工具的版本和gradle版本以及greendao版本要配套使用,否則依賴編譯會報錯。

GreenDAO 版本所需 Gradle 版本推薦 Android Studio 版本
3.3.0+Gradle 8.0+AS Flamingo (2022.2.1)+
3.3.0Gradle 6.7 ~ 7.xAS 4.2 ~ Arctic Fox
3.2.x 及以下Gradle 4.x ~ 6.xAS 3.x ~ 4.1
具體使用

1.創建entity對象

@Entity
public class User {@Id(autoincrement = true)private Long id;private String name;private int age;@Generated(hash = 586692638)public User() {}@Generated(hash = 1309193360)public User(Long id, String name, int age) {this.id = id;this.name = name;this.age = age;}public Long getId() {return id;}public void setId(Long id) {this.id = id;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}
}

2.封裝Manager管理類

object GreenDaoManager {private var daoSession: DaoSession? = nullprivate const val DB_NAME = "user.db"private const val TAG = "GreenDaoManager"fun init(context: Context) {if (daoSession == null) {Log.d(TAG, "GreenDaoManager 已初始化")}val helper = DaoMaster.DevOpenHelper(context, DB_NAME)val db = helper.writableDbdaoSession = DaoMaster(db).newSession()}private fun getDaoSession(): DaoSession {if (daoSession == null) {Log.d(TAG, "GreenDaoManager 尚未初始化,請先調用 init(context)")}return daoSession!!}// 獲取某個實體的 DAO(以 User 為例)fun getUserDao(): UserDao {return getDaoSession().userDao}// 可添加其他 DAO 的快捷訪問方法
}

3.Application中進行初始化

class MyApplication : Application() {override fun onCreate() {super.onCreate()GreenDaoManager.init(this)}
}

結果打印

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/88482.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/88482.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/88482.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

24小時留言板

title: 24小時留言板 date: 2025-06-25 23:32:53 tags: 代碼工具 24小時留言板 核心效果如圖所示 代碼解析 # TodoController 代碼解析## 整體架構 這是一個基于Spring WebFlux的響應式控制器,結合Redis發布\訂閱機制實現實時更新的待辦事項系統。關鍵組件包括&a…

深入理解Redis整數集合(intset)的升級策略:內存優化的核心魔法

引言 作為Redis中最節省內存的數據結構之一,整數集合(intset) 專門用于高效存儲整型數據。但你可能不知道,它背后藏著一個精妙的「動態升級」機制——能在不浪費內存的前提下,靈活適配不同大小的整數。今天我們就來扒…

高性能計算(HPC)集群和工作流:intel-oneapi-hpc-toolkit安裝與使用

成功安裝了 Intel oneAPI HPC Toolkit!這個工具包包含了很多強大的工具,可以幫助你優化和加速高性能計算(HPC)任務,特別是在使用 Intel 的硬件(如 Xeon 處理器和 GPU)時。 接下來,…

QT vscode cmake 編譯 undefined reference to `vtable for 問題解決

編譯時出現undefined reference to vtable for 問題,是沒有添加頭文件到目標,添加即可: 如果使用的是qt5, 沒有qt_add_executable, 使用qt 5的 自動處理即可: # 啟用 Qt 自動處理功能 set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC …

linux內核奔潰轉儲之kexec、kdump

一、kexec是什么? kexec 是 Linux 內核提供的一種關鍵技術,允許系統?在不經過完整硬件重啟(BIOS/UEFI 初始化)的情況下,直接從當前正在運行的內核加載并啟動另一個新內核?。以下是其核心要點: ?定義與核…

標題:2025金融護網行動實戰指南:從合規防御到智能免疫的體系化進階

引言 2025年,隨著《中國人民銀行業務領域網絡安全事件報告管理辦法》正式實施,金融護網行動已從“合規檢查”升級為“能力對抗”。面對AI驅動的自適應攻擊、勒索病毒與黑灰產協同威脅,金融機構需構建“技術-管理-人才”三位一體的智能防御體…

NEO4j的安裝部署

windows neo4j新版本安裝需要部署jdk17,下面這個版本是jdk8最新的支持版本 neo4j-community-3.5.9-windows.zipIndex of /doc/neo4j/3.5.9/ 啟動 dos面板中啟動 neo4j.bat console linux neo4j新版本安裝需要部署jdk17,下面這個版本是jdk8最新的支…

八股文——JAVA基礎:說一下C++與java的區別

首先,c與java都是面向對象編程,都包含封裝、繼承、多態的特性。但是c多繼承,而java只能單繼承與多實現。 其次,java無法直接訪問內存,java通過引用對向,比如new一個對象,拿到的對象實例實際上是…

Vue3 Composition API 深度解析:告別Options API的局限性

目錄 一、為什么需要Composition API? 二、核心概念:setup() 函數 三、響應式核心:ref() 和 reactive() 1. ref - 處理基本類型/對象 2. reactive - 處理對象 四、生命周期鉤子新寫法 五、強大的邏輯復用:組合式函數 六、響…

IoT/HCIP實驗-5/基于NB-IoT的智慧農業實驗(平臺側開發+端側編碼+基礎調試分析)

文章目錄 概述擴展板 E53_IA1智慧農業平臺測開發功能定義/模型開發編解碼插件開發-消息編解碼插件開發-關聯編解碼插件開發-部署注冊實際設備 智慧農業端側編碼工程配置數據結構定義數據收集任務數據上報任務設備接入過程正確設置接入參數命令響應任務 程序調試其他 概述 本實…

多網絡環境vmware虛擬機配置

環境:一臺臺式機、一臺筆記本、筆記本中安裝虛擬機。臺式機及筆記本都使用wifi連接。 實現效果:虛擬機采用固定ip方式,臺式機可以直接連接虛擬機。 1、VMware環境配置 臺式機ip:192.168.31.43 筆記本ip:192.168.31.…

ZArchiver×亞矩云手機:云端文件管理的“超維解壓”革命

在數字化辦公與移動應用生態中,文件壓縮與解壓是高頻剛需場景,但傳統本地工具受限于設備性能、存儲空間及跨平臺協作痛點。ZArchiver(輕量級壓縮工具)與亞矩云手機的結合,通過“云端算力虛擬化環境”的創新模式&#x…

微幀WZVQA:極致還原人眼感知,精準評估視頻畫質

隨著移動互聯網的不斷發展以及智能手機的普及,短視頻已逐步取代圖片和文字,躋身主流媒體形式的前列。短視頻平臺的興起,讓數十億用戶可以制作,分享并接收彼此的信息,為人們開辟了一條全新的知識獲取途徑。然而&#xf…

信創 CDC 實戰|國產數據庫的數據高速通道:OceanBase 實時入倉 StarRocks

國產數據庫加速進入核心系統,傳統同步工具卻頻頻“掉鏈子”。本系列文章聚焦 OceanBase、GaussDB、TDSQL、達夢等主流信創數據庫,逐一拆解其日志機制與同步難點,結合 TapData 的實踐經驗,系統講解從 CDC 捕獲到實時入倉&#xff0…

Unity 通過AVProMovieCapture插件實現攝像機錄屏

1.AVProMovieCapture插件下載 沒什么好說的,搞到安裝包之后,直接往項目中拉就行。 2.操作面板配置 (1)在Hierarchy創建一個空物體,上面添加Capture From Camera和Camera Selector兩個插件 (2&#xff09…

深度學習:PyTorch卷積神經網絡分享(1)

本文目錄: 一、CNN概述二、CNN日常應用三、CNN的卷積層(一 )基本介紹(二)卷積層計算1.對輸入數據的要求2.卷積核核心參數3.計算過程4.特征圖尺寸計算5.1、多通道卷積計算5.2、多卷積核計算6.PyTorch卷積層API 前言&…

Cesium添加3dtiles并平移到指定經緯度

訪問tileset.json,查看root.transform,12,13,14分別代表模型參考原點的地心坐標Cartesian3(x,y,z) let tileset await Cesium.Cesium3DTileset.fromUrl()構造origin_cartesian3new Cesium.Cartesian3(x,y,z) 設置待平移到的位置經緯高為longitude,latitude,height,例如(116,…

STM32G070x 單片機項目代碼解析:基于 HAL 庫的嵌入式系統開發

項目總體架構 該項目采用標準的 STM32 工程結構,主要包含以下幾個部分: 頭文件包含:系統頭文件和用戶自定義頭文件外設句柄定義:SPI、TIM、UART 等外設的句柄聲明用戶自定義變量:LED 控制、按鍵狀態等標志位初始化函數…

winform mvvm

if (!mvvmContext1.IsDesignMode) InitializeBindings(); 這段代碼的意思是:如果當前應用程序不是處于設計模式(即程序正在運行),就調用InitializeBindings方法來初始化視圖與視圖模型之間的綁定。 void Initiali…

防火墻快速管理軟件,66K超小巧

軟件介紹 今天為大家推薦一款輕量級的Windows防火墻管理工具,這款工具能幫助用戶快速開啟或關閉系統防火墻功能,操作比系統原生設置更加便捷高效。 軟件優勢 相比通過系統設置層層點擊的操作方式,這款僅66KB大小的微型工具只需單擊按鈕…