GreenDAO 是一個輕量級的 ORM(對象關系映射)框架,用于將 Android 應用程序中的對象映射到 SQLite 數據庫中。以下是使用 GreenDAO 進行操作的基本步驟:
在項目的 build.gradle 文件中添加 GreenDAO 的依賴:
dependencies {
implementation 'org.greenrobot:greendao: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(random = true)
private int version;
// Getters and setters
}
創建一個繼承自 DaoMaster.DevOpenHelper 的類,用于管理數據庫的創建和升級。例如,我們創建一個 MyDbHelper 類:
import android.content.Context;
import org.greenrobot.greendao.database.Database;
import org.greenrobot.greendao.database.DatabaseOpenHelper;
import org.greenrobot.greendao.identityscope.IdentityScopeType;
public class MyDbHelper extends DatabaseOpenHelper {
public static final String DATABASE_NAME = "my_database.db";
public static final int DATABASE_VERSION = 1;
public MyDbHelper(Context context) {
super(context, DATABASE_NAME, null, DATABASE_VERSION);
}
@Override
public void onUpgrade(Database db, int oldVersion, int newVersion) {
// Handle database upgrade here
}
}
接下來,創建一個繼承自 DaoMaster 的類,用于管理所有的 Dao 對象。例如,我們創建一個 MyDaoMaster 類:
import org.greenrobot.greendao.database.Database;
import org.greenrobot.greendao.DaoMaster;
public class MyDaoMaster extends DaoMaster {
public static final String DATABASE_NAME = "my_database.db";
public MyDaoMaster(Database db) {
super(db);
}
public static DaoMaster newInstance(Context context) {
Database db = new MyDbHelper(context).getWritableDb();
return new MyDaoMaster(db);
}
}
創建一個繼承自 Dao 的類,用于定義對實體類的操作。例如,我們創建一個 UserDao 類:
import org.greenrobot.greendao.Dao;
import org.greenrobot.greendao.Query;
import org.greenrobot.greendao.annotation.Transaction;
import java.util.List;
public class UserDao extends Dao<User, Long> {
public UserDao(DaoSession daoSession) {
super(daoSession);
}
@Transaction
public void insert(User user) {
insertOrReplace(user);
}
@Transaction
public List<User> getAll() {
Query<User> query = query();
return query.list();
}
@Transaction
public void update(User user) {
update(user, true);
}
@Transaction
public void delete(User user) {
delete(user);
}
}
在你的應用程序中,你可以使用 DaoSession 對象來執行數據庫操作。例如:
import android.content.Context;
import org.greenrobot.greendao.DaoSession;
import org.greenrobot.greendao.GreenDAO;
public class MyApplication extends Application {
private DaoSession daoSession;
@Override
public void onCreate() {
super.onCreate();
MyDbHelper dbHelper = new MyDbHelper(this);
Database db = dbHelper.getWritableDb();
daoSession = new DaoMaster(db).newSession();
}
public DaoSession getDaoSession() {
return daoSession;
}
}
在你的 Activity 或 Fragment 中,你可以使用 MyApplication 類的 getDaoSession() 方法來獲取 DaoSession 對象,并執行數據庫操作:
import android.os.Bundle;
import androidx.appcompat.app.AppCompatActivity;
import org.greenrobot.greendao.query.Query;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyApplication myApplication = (MyApplication) getApplication();
DaoSession daoSession = myApplication.getDaoSession();
// Insert a user
User user = new User();
user.setName("John Doe");
user.setAge(25);
daoSession.getUserDao().insert(user);
// Get all users
List<User> users = daoSession.getUserDao().getAll();
for (User u : users) {
System.out.println(u.getName() + ", " + u.getAge());
}
}
}
以上就是使用 GreenDAO 進行操作的基本步驟。你可以根據實際需求進行相應的調整。