1. 程式人生 > >【10】【1】Android GreenDao資料庫講解

【10】【1】Android GreenDao資料庫講解

GreenDao資料庫講解

  • 在Android開發過程中,資料的快取的開發可能會使用SQLite。然而在使用它時,我們往往需要做許多額外的工作,編寫Native SQL(原生的)語句與解析查詢結果等。所以適應Android的 ORM框架就產生了
  • 目前流行 Android的ORM框架 GreenDAO(從效能上)。
  • ORM:物件關係對映(Object Relational Mapping 簡稱ORM 或O/RM 或O/R mapping)
  • 即物件關係對映。它的實現思想就是
  • 將關係資料庫中表的資料對映為物件,以物件的形式展現,這樣開發人員就可以對資料庫的操作轉化為對這些物件的操作,因此他的目的是為了方便開發人員以面向物件的思想來實現對資料庫的操作。

關於GreenDao 描述

  • 簡單來講,GreenDAO 是一個將物件對映到SQLite資料庫中的輕量且快速的ORM解決方案。
  • greenDAO優點
  • 記憶體開銷小、簡易的API、效能高度優化等。
  • 操作靈活:支援get、update、delete等操作

關於GreenDao配置

// In your root build.gradle file:
buildscript {
    repositories {
        jcenter()
        mavenCentral() // add repository
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.1'
        classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin
    }
}
 
// In your app projects build.gradle file:
apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao' // apply plugin
 
dependencies {
    implementation 'org.greenrobot:greendao:3.2.2' // add library
}
  • GreenDAO 整個執行的邏輯是通過配置其提供的JavaSE程式碼,自動在一個資料夾下生成需要Bean、Dao、DaoMaste、DaoSession。
  • 然後在Android程式碼中通過自動生成的DaoSession來操作資料庫,具體方法如下:
  • 新建一個工程GreenDaoDemo
  • 如果需要混淆
      -keepclassmembers class * extends org.greenrobot.greendao.AbstractDao {
      public static java.lang.String TABLENAME;
      }
      -keep class **$Properties
      # If you do not use SQLCipher:
      -dontwarn org.greenrobot.greendao.database.**
      # If you do not use Rx:
      -dontwarn rx.**
  
  • 在./src/main目錄下建立一個同java同層級的java-gen資料夾
    1. 在./src/main目錄下建立一個同java同層級的java-gen資料夾

    2. 開啟build.gradle, android節點下引入sourseSets sourceSets{ main{ java.srcDirs=['src/main/java','src/main/java-gen'] } }

    3. 新建一個Module 選擇最下面的Java Library 名字叫daogenerator 類名叫DaoMaker 並在build.gradle新增依賴 implementation ‘org.greenrobot:greendao-generator:3.2.2’

    4. 編寫DaoMaker package com.boradcasst.liuan.daogenerator;

      import org.greenrobot.greendao.generator.DaoGenerator;
      import org.greenrobot.greendao.generator.Entity;
      import org.greenrobot.greendao.generator.Schema;
      
      public class DaoMaker {
          public static void main(String[] args) {
              //生成資料庫的實體類XX entity對應的是資料庫的表
              Schema schema = new Schema(1,"com.student.entity");
              addStudent(schema);
              schema.setDefaultJavaPackageDao("com.student.dao");
              try {
                  new DaoGenerator().generateAll(schema,"G:\\android\\demo\\GreenDaoDemo\\app\\src\\main\\java-gen");
              } catch (Exception e) {
                  e.printStackTrace();
              }
          }
      
          /**
           *  建立資料庫的表
           * @param schema
           */
          private static void addStudent(Schema schema){
              //建立資料庫的表
              Entity entity=schema.addEntity("Student");
              //主鍵 是int型別
              entity.addIdProperty();
              entity. addStringProperty("name");//建立資料庫的列
              entity. addStringProperty("address");//建立資料庫的列
              entity. addIntProperty("age");//建立資料庫的列
          }
      }
      
  1. 右鍵執行這個main 之後java-gen下會生成com.student.dao目錄 包括DaoMaster DaoSession StudentDao ;com.student.entity 目錄 包括Student 實體類 下面我們來分析這些目錄