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 和 DaoSession
创建一个继承自 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 对象
创建一个继承自 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{ public UserDao(DaoSession daoSession) { super(daoSession); } @Transaction public void insert(User user) { insertOrReplace(user); } @Transaction public List getAll() { Query query = query(); return query.list(); } @Transaction public void update(User user) { update(user, true); } @Transaction public void delete(User user) { delete(user); } }
- 使用 DaoSession 进行操作
在你的应用程序中,你可以使用 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 Listusers = daoSession.getUserDao().getAll(); for (User u : users) { System.out.println(u.getName() + ", " + u.getAge()); } } }
以上就是使用 GreenDAO 进行操作的基本步骤。你可以根据实际需求进行相应的调整。