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 的类,并在其中定义所有实体类的 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;
}
// 在这里添加与数据库进行交互的方法
}
在应用程序的 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 的实例执行相应的操作。例如,向 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 List<User> getAllUsers() {
DaoSession daoSession = MyApplication.getDaoMaster().newSession();
Query<User> query = daoSession.query(User.class);
return query.list();
}
以上就是在 Android 项目中使用 GreenDAO 的基本步骤。您可以根据自己的需求进行相应的调整。