Now you can Subscribe using RSS

Submit your Email

2017/10/08

GreenDao 使用 Generator 建立表結構

asd
使用 Generator 方式建立數據庫表,是GreenDao 的另一種方式
個人也比較喜歡使用這種方式建立表
使用 Generator 與 註解方式建立表有蠻大的差異
所需要導入的方式也不太一樣
在build.gradle(Module:app) 中添加 GreenDao 依賴如下所示

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    compile 'com.android.support:appcompat-v7:26.+'
    compile 'com.android.support.constraint:constraint-layout:1.0.2'
    testCompile 'junit:junit:4.12'
    compile 'org.greenrobot:greendao:3.2.2' // add library
}
接下來 Flie -> New -> New Module 選擇 Java Library

建立好一個 Java Library 之後點選該 lib 的 gradle 進行 greendao-generator 依賴添加
apply plugin: 'java'

dependencies {
    compile fileTree(dir: 'libs', include: ['*.jar'])
    compile 'org.greenrobot:greendao-generator:3.2.0'//add generator
}

sourceCompatibility = "1.7"
targetCompatibility = "1.7"
以上依賴添加完畢之後就可以開始進行建表的動作
在 lib 中建立一個 class 然後添加以下程式碼
package com.example;

import org.greenrobot.greendao.generator.DaoGenerator;
import org.greenrobot.greendao.generator.Entity;
import org.greenrobot.greendao.generator.Schema;

public class MyClass {
    private static int DB_VERSION = 1;
    private static String PACKAGE_NAME = "com.jrtou.greendaodemo2";

    public static void main(String[] args) {
        //第一個參數為 db 版本號
        //第二參數為建立 dao相關 .java 檔位置
        Schema schema = new Schema(DB_VERSION,  PACKAGE_NAME+"/sqlite");

        createBook(schema);//建立book表
        try {
            //第二參數為 generator 產生 .java 檔放置路徑
            new DaoGenerator().generateAll(schema, "../GreenDaoDemo2/app/src/main/java/");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    private static void createBook(Schema schema) {
        Entity book = schema.addEntity("BookEntity");//建立 book entry
        book.addIdProperty().autoincrement().primaryKey();//建立 id欄位 pk long 屬性 自動增長
        book.addStringProperty("Name").notNull();//建立 name 欄位 不能為空 string 屬性
        book.addIntProperty("Price").notNull();//建立 price 欄位 不能為空 int 屬性
        book.addStringProperty("Memo");//建立 memo 欄位 string 屬性
    }
}

DB_VERSION 不用解釋就是 Databases 版本號
PACKAGE_NAME 為使用 generator 幫你產生相關程式碼所放置的路徑
但必須要先建立好資料夾不然它會找不到資料夾放置會報錯
至於為什麼要放置在 package name  先把 Android Studio 資料夾結構切換到 Project
我們一般使用的程式碼都是放置在 package name
看以上圖應該很好理解為什麼要PACKAGE_NAME+/sqlite
(sqlite 可以替換成你想要的資料夾名稱)

接下來為 new DaoGenerator().generateAll(schema,"../GreenDaoDemo2/app/src/main/java/)
中的第二個參數請看下圖
這樣應該很好理解為什麼要這麼做,
網路上很多都是在建立一個與app/src/main/java 同層的資料夾
還需要在 gradle 中添加設定太麻煩了
直接生產到你想放置的地方
或是第二個參數改為你電腦上的某的位置中資料夾
自己在複製檔案過去想放置的地方也可以
建表的方式在剛剛呈現的程式碼中都有註解不太難理解
表就是 Entity
欄位就是 Property
想要什麼設定都跟 sql 語法有點像都幫你封裝成程式碼讓你選擇

建立表的程式碼完成後點選滑鼠右鍵 Run your class.main()
來執行生產動作
執行沒有錯誤就代表生產成功可以
開始使用 GreenDao 進行 Sqlite 操作了

0 意見:

張貼留言

Coprights @ 2016, Blogger Templates Designed By Templateism | Templatelib