12/08/2018, 15:11

[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

  1. 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'
            }
    }
    
  2. 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);
        }
    }
    
  3. 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();
        }
    
  4. 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;
         }
    
  1. 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.
0