[Android] GreenDao
I.Giới thiệu Các bạn đã bao giờ phải tạo ra một database vô cùng phức tạp trên app của mình chưa, các bạn có cảm thấy thủ tục sử dụng nó quá phức tạp không? Với SQlite phức tạp và dài dòng từ khâu khởi tạo cho đến việc tạo table, tạo key phải tuân thủ đúng cứu pháp của 1 câu lệnh Sqlite, điều đó ...
I.Giới thiệu Các bạn đã bao giờ phải tạo ra một database vô cùng phức tạp trên app của mình chưa, các bạn có cảm thấy thủ tục sử dụng nó quá phức tạp không? Với SQlite phức tạp và dài dòng từ khâu khởi tạo cho đến việc tạo table, tạo key phải tuân thủ đúng cứu pháp của 1 câu lệnh Sqlite, điều đó làm mình cảm thấy rất khó khăn chỉnh sửa, tìm bug và đặc biệt mất quá nhiều time vào nó. Để cải thiện và giải quyết vấn đề đó mình đã tìm đến GreenDao. GreenDao là một thư viện giúp chúng ta có thể tương tác với SQL một cách đơn giản như việc thực thi với các đối tượng trong java vậy. Dùng GreenDao để lưu trữ, cập nhật, xóa, và truy vấn SQL dựa trên các đối tượng Java, sử dụng một định hướng đối tượng API đơn giản.
Giới thiệu đã xong. Bây giời Mình sẽ hướng dẫn các bạn 1 cách đơn giản nhất và ngắn gọn nhất để sử dụng GreenDao một cách cơ bản nhất, hiệu quả nhất và mất it thời gian tìm hiểu nhất.
II.Cách thực hiện
-
Tích hợp GreenDao
- Thêm đoạn code sau vào file build.grandle
dependencies { compile 'org.greenrobot:greendao:3.2.0' compile 'de.greenrobot:greendao-generator:2.1.0' } and buildscript { dependencies { classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1' } }
-
Tạo 1 database SqliteOpenHelper
public class SqliteOpenHelper extends DaoMaster.DevOpenHelper { public SqliteOpenHelper(Context context, String name) { super(context, name); } @Override public void onUpgrade(Database db, int oldVersion, int newVersion) { super.onUpgrade(db, oldVersion, newVersion); } }
-
Tạo phiên làm việc với DaoSession.
private LocalDatabaseHelper(Context context) { DaoMaster.DevOpenHelper helper = new SqliteOpenHelper(context.getApplicationContext(), "lockscreen-db"); database = helper.getWritableDb(); daoSession = new DaoMaster(database).newSession(); }
-
Sử dụng luôn object để tạo table.
- Thêm keywod "@Entity(nameInDb = "Data")" trước Object
- Thêm keywod "@Id" trước key
@Entity(nameInDb = "Data") public class Data { @Id private long id; private String type; }
- Tương tác với DataBase
-
Từ đây quá trình khởi tạo đã xong chúng ta chỉ việc sử dụng một cách đơn giản
dataDao = LocalDatabaseHelper.getInstance(this).getDaoSession().getDataDao();
-
insert data
private void addData(Data data) { dataDao.insert(data); }
-
get data
private void getData() { dataDao.queryBuilder().orderDesc(DataDao.Properties.Id).build().uniqueOrThrow(); }
-
delete data
private void deleteData(Data data) { dataDao.delete(data); }
-
update data
private void updateData(Data data) { dataDao.update(data); }
IV.Kết Thúc
- Kết quả sử dụng GreenDao
- Hiệu suất tối đa
- Dễ dàng sử dụng
- Tối ưu hóa cho Android
- Sử dụng bộ nhớ tối thiểu
- Kích cỡ thư viện nhỏ
- Tốc độ thực thi của GreenDao nhanh hơn rất nhiều so với việc thao tác trên ORMLite.