GreenDAO 是一个轻量级的 ORM 解决方案,用于将对象映射到 SQLite 数据库中。以下是如何在 Android 项目中使用 GreenDAO 的简要步骤:
- 添加依赖项:
在项目的 build.gradle 文件中添加以下依赖项:
dependencies { implementation 'org.greenrobot:greendao:3.3.0' annotationProcessor 'org.greenrobot:greendao-compiler:3.3.0' }
- 创建实体类:
创建一个实体类,并使用 @Entity 注解标记它。例如,创建一个名为 User 的实体类:
import org.greenrobot.greendao.annotation.Entity; import org.greenrobot.greendao.annotation.Generated; import org.greenrobot.greendao.annotation.Id; @Entity public class User { @Id(autoincrement = true) private Long id; private String name; private int age; @Generated(hash = 1079432921) private transient Long _id; // Getters and setters }
- 创建 DaoMaster 和 DaoSession:
创建一个名为 DaoMaster 的类,并在其中定义所有实体类的 Dao。例如,为 User 实体类创建一个名为 UserDao 的接口:
import org.greenrobot.greendao.DaoMaster; import org.greenrobot.greendao.DaoSession; public class DaoMaster extends DaoMaster { public static volatile DaoMaster INSTANCE; private DaoSession daoSession; private DaoMaster() { // 注意:GreenDAO 使用了线程局部变量,因此不需要在这里创建新的实例。 } public static DaoMaster getInstance(Context context) { if (INSTANCE == null) { synchronized (DaoMaster.class) { if (INSTANCE == null) { INSTANCE = new DaoMaster(context.getApplicationContext()); } } } return INSTANCE; } public DaoSession newSession() { return daoSession == null ? daoSession = new DaoSession(database) : daoSession; } }
接下来,创建一个名为 DaoSession 的类,用于与数据库进行交互:
import org.greenrobot.greendao.database.Database; import org.greenrobot.greendao.database.DatabaseOpenHelper; import org.greenrobot.greendao.query.Query; import org.greenrobot.greendao.query.QueryBuilder; public class DaoSession { private Database database; public DaoSession(Database database) { this.database = database; } // 在这里添加与数据库进行交互的方法 }
- 初始化 GreenDAO:
在应用程序的 Application 类中初始化 GreenDAO:
import android.app.Application; import org.greenrobot.greendao.database.Database; import org.greenrobot.greendao.database.DatabaseOpenHelper; public class MyApplication extends Application { private DaoMaster daoMaster; @Override public void onCreate() { super.onCreate(); DatabaseOpenHelper helper = new DatabaseOpenHelper(this, "my-db", null, 1); database = helper.getWritableDb(); daoMaster = new DaoMaster(database); } public DaoMaster getDaoMaster() { return daoMaster; } }
- 使用 DaoSession 进行数据库操作:
在需要与数据库进行交互的地方,使用 DaoSession 的实例执行相应的操作。例如,向 User 表中插入一条记录:
import org.greenrobot.greendao.query.QueryBuilder; public void insertUser(String name, int age) { DaoSession daoSession = MyApplication.getDaoMaster().newSession(); User user = new User(); user.setName(name); user.setAge(age); daoSession.insert(user); }
查询 User 表中的所有记录:
import org.greenrobot.greendao.query.Query; public ListgetAllUsers() { DaoSession daoSession = MyApplication.getDaoMaster().newSession(); Query query = daoSession.query(User.class); return query.list(); }
以上就是在 Android 项目中使用 GreenDAO 的基本步骤。您可以根据自己的需求进行相应的调整。