Android数据库GreenDao的使用
GreenDao 是一个轻量级的对象关系映射(ORM)库,用于简化 Android 应用中的数据库操作。简化数据库操作:通过注解定义实体类,GreenDao 自动生成 DAO(数据访问对象)类,简化了数据库的增、删、改、查操作高性能:GreenDao 设计目标之一是高效地执行数据库操作,尤其在处理大量数据时表现出色自动生成代码:通过编译时生成代码,减少了手动编写 SQL 和数据处理逻辑的需要事务支
·
简介
GreenDao 是一个轻量级的对象关系映射(ORM)库,用于简化 Android 应用中的数据库操作。它提供了以下主要功能:
- 简化数据库操作:通过注解定义实体类,GreenDao 自动生成 DAO(数据访问对象)类,简化了数据库的增、删、改、查操作
- 高性能:GreenDao 设计目标之一是高效地执行数据库操作,尤其在处理大量数据时表现出色
- 自动生成代码:通过编译时生成代码,减少了手动编写 SQL 和数据处理逻辑的需要
- 事务支持:支持数据库事务,确保数据操作的原子性和一致性
- 灵活性:可以通过自定义查询和批量操作,满足复杂的数据处理需求
- 小巧:库体积小,适合需要轻量级 ORM 的应用
开发工具集成
- 在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 1
daoPackage '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.0 | Gradle 6.7 ~ 7.x | AS 4.2 ~ Arctic Fox |
| 3.2.x 及以下 | Gradle 4.x ~ 6.x | AS 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? = null
private 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.writableDb
daoSession = 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)
}
}

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)