简介
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 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.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? = 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)}
}