在網上有不少比較ORM框架的報告,比較知名是ORMLite vs GreenDao。GreenDao官網就自稱執行速度比ORMLite快幾倍。
基於性能上的考慮,GreenDao應該是不錯,可是它早期佈置就是讓人蛋痛,官網文件也不user friendly,反正我等菜鳥要去消化是痛苦的。
所以下面就記錄一下早期佈置的步驟,如果你也是菜鳥偶遇到這章記錄,先跟著做不要問為什麼,相信小吉~
之前我就是花了太多時間去了解當中的意思反而混亂~先佈置起來,之後就會更易去了解各文件的意思。加油!互勉之~~~~么么哒~
步驟: 看圖識字(我弄的是Eclipse, 搞AS的朋友可以到最下面的傳送門找教學步驟的連結)`
1) 下載需要的文件
因為官方很帥氣的甩下這句~我們就要自己去http://mvnrepository.com/下載吧!
If you don’t use Maven or Gradle, please download the jars directly from Maven Central using the artifacts links given above.
1. freemaker2.3.22.jar
2. greendao-generator-1.3.1
3. greendao-1.3.7.jar
2) 創建一個新的JAVA項目~請看清楚!!!是JAVA!不是Android !!!
把剛剛下載的freemaker 和 greendao-generator兩個檔案加到JAVA的library, 新建一個class來寫一個文件產生器!!
右click你的Java項目 > 選Properties > Java Build Path > Add External JARs > 找回你的freemaker 和 greendao-generator
在Java項目 新建一個Class 名字是"GreenDaoGenerator" (我這個java project 叫greendaogenerator,隨你自己喜歡改什麼名字都可以)
開始敲碼 (小吉盡量嘗試用英文寫註解,要成為像龍偉神一樣的牛的人! 哈哈, 中文的放後面~如果看不明我的爛英文,才看中文吧~歡迎指導我的語文)
package greendaogenerator;
import de.greenrobot.daogenerator.DaoGenerator;
import de.greenrobot.daogenerator.Entity;
import de.greenrobot.daogenerator.Property;
import de.greenrobot.daogenerator.Schema;
import de.greenrobot.daogenerator.ToMany;
public class GreenDaoGenerator {
public static void main(String[] args) throws Exception {
//First param:Database vision, Second param:Android project package 參數1:數據庫版本,參數2:你需要數據庫的Android項目
Schema schema = new Schema(1, "com.example.testspinnersqlite.greendao");
//Create table "Label" 新建數據庫的表,叫Label
addLabel(schema);
//Generate DAO Class to the Android project
new DaoGenerator().generateAll(schema, "../testspinnersqlite/src-gen");
/*這個class是文件生成器麻,上面就是要定義地址放置生成的文件(!!!)要先在你的android項目新建一個叫"src-gen"的文件夾,不叫src-gen也可以,不過需在上面那句改回你定下的名稱...真任性什麼都要自己的一套*/
}
<span style="white-space:pre"> </span>//做表Label的設計
private static void addLabel(Schema schema) {
//Create entity 定義表的名稱,
Entity note = schema.addEntity("Label");
//Add table columns 定義表的欄
note.addIdProperty(); //每個表應該都有ID吧
note.addStringProperty("label").notNull(); //我的表數據只一項數據記錄標籤label,這裡就是你自由發揮的地方了
}
}
我把解釋都寫在上面了~不知道這樣表達好不好? 不好的跟我說句,下次改回script 跟解釋分開。
yeah~我們去運行這個class! 它就會啪啪啪的把東西射到你的android項目裡了~你看全寫到了~運動時間真短才148ms
再看看小吉的android項目有什麼了~ 如果你的生成物和我不一樣~是分散了一層層的檔案,不用怕~右按文件夾 找 Build Path > Use as Source Folder 它們就會在一起了~
3) 把工作視線放回自己的Android項目就可以了
一開始我們是下載了3個JAR包~ 可是只用了兩個~ 所以剩下的 greendao-1.3.7.jar 就是現在出場了,先放到自己的Android 項目當中(這里是android了!不是java項目!!!!)
老步驟 選Properties > Java Build Path > Add External JARs > 找greendao-1.3.7.jar (不貼圖了,我們只是菜烏,不是幼智)
之後小吉把操作步驟簡化,情景設定成當運行mainActivity時就生成數據庫,之後就隨意操作了~
所以在onCreate裡敲一下碼:
public class MainActivity extends ActionBarActivity {
public DaoSession daoSession; //Manages the database 管理我們的數據庫
private LabelDao lableDao; //ORM-Object to CRUD tabel 可以在反射對象中操作我們一開始生成的表
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 設定數據庫,我叫它做"label-db",你改你自己的
DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this,"label-db", null);
// 取一個數據庫實體來操
SQLiteDatabase db = helper.getWritableDatabase();
// DaoMaster是GreenDao內的大哥大,數據庫的生成靠它
DaoMaster daoMaster = new DaoMaster(db);
// daoSession是GreenDao內代理人,管理我們的DAO對象,擁有不同的getter
daoSession = daoMaster.newSession();
// lableDao 在這裡被上帝 / 女媧 吹了一口神氣,有生命了可以去幹活了
lableDao = daoSession.getLabelDao();
}
}
有些概念性的東西我不會用英文說。。。。漢化算了
反正步驟就是上面這些,現在你用模擬器運作,再用指令查看apk的數據庫文件夾,就會看到它生成了~
菜鳥筆記麻~還是記一下步驟~這部份是小吉的快速記錄,方便自己工作,如果你看不明白是正常的,請移玉步看郭神的教程,最底下面有傳送門~
1) 按 WinKey + R 寫上 cmd 按 確定 (不知道什麼是WinKey? 在你鍵盤上找它)----->
2) 在cmd 中先找到電腦放安卓工具的位置: (請確定你已經打開了模擬器)
用adb操作:
3) 一直打以下指令 (在 "#" 之後的是指令)
//這個要 cd 回自已的android項目
// 最後就是看到我的數據庫已經有了 "label-db"
至於如何操作GreenDAO CRUD網上的教程很多,也挺清楚~我就不重覆了~是上面的安裝比較麻煩~希望上面的step by step是菜鳥都能看明白~
如果想理解GreenDAO的工作原理下面傳送門有連結~~加油囉~
(因為這章我是用小吉的菜鳥角度去理解和寫筆記,如果有錯的請指正,好讓小吉脫菜~Thank you so much~)
/************************************ 深化學習傳送門 *********************************/
GreenDao官方文档翻译上: http://blog.csdn.net/xushuaic/article/details/24438841
Android Studio佈置GreenDao 教程 :http://blog.surecase.eu/using-greendao-with-android-studio-ide/
郭神的sqlite命令: http://blog.csdn.net/guolin_blog/article/details/38461239