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 的基本步驟。您可以根據自己的需求進行相應的調整。