轉(zhuǎn)自:http://www.jianshu.com/p/4986100eff90
關(guān)于GreenDao
greenDao是一個(gè)將對(duì)象映射到SQLite數(shù)據(jù)庫(kù)中的輕量且快速的ORM解決方案。關(guān)于greenDAO的概念可以看官網(wǎng)greenDAO
greenDAO 優(yōu)勢(shì)
1、一個(gè)精簡(jiǎn)的庫(kù)2、性能最大化3、內(nèi)存開銷最小化4、易于使用的 APIs5、對(duì) Android 進(jìn)行高度優(yōu)化
GreenDao 3.0使用
GreenDao 3.0采用注解的方式來(lái)定義實(shí)體類,通過(guò)gradle插件生成相應(yīng)的代碼。
一,在as中導(dǎo)入相關(guān)的包
compile'org.greenrobot:greendao:3.0.1'compile'org.greenrobot:greendao-generator:3.0.0'二,在build.gradle中進(jìn)行配置:
apply plugin: 'org.greenrobot.greendao'buildscript { repositories { mavenCentral() } dependencies { classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0' }}在gradle的根模塊中加入上述代碼。
三,自定義路徑
greendao { schemaVersion 1 daoPackage 'com.anye.greendao.gen' targetGenDir 'src/main/java'}在gradle的根模塊中加入上述代碼,就完成了我們的基本配置了。屬性介紹:schemaVersion--> 指定數(shù)據(jù)庫(kù)schema版本號(hào),遷移等操作會(huì)用到;daoPackage --> dao的包名,包名默認(rèn)是entity所在的包;targetGenDir --> 生成數(shù)據(jù)庫(kù)文件的目錄;
四,創(chuàng)建一個(gè)User的實(shí)體類
@Entitypublic class User { @Id PRivate Long id; private String name; @Transient private int tempUsageCount; // not persisted }五,MakeProject
編譯項(xiàng)目,User實(shí)體類會(huì)自動(dòng)編譯,生成get、set方法并且會(huì)在com.anye.greendao.gen目錄下生成三個(gè)文件;
greenDaoGreenDao使用
public class Myapplication extends Application { private DaoMaster.DevOpenHelper mHelper; private SQLiteDatabase db; private DaoMaster mDaoMaster; private Daosession mDaoSession; public static MyApplication instances; @Override public void onCreate() { super.onCreate(); instances = this; setDatabase(); } public static MyApplication getInstances(){ return instances; }/** * 設(shè)置greenDao */private void setDatabase() { // 通過(guò) DaoMaster 的內(nèi)部類 DevOpenHelper,你可以得到一個(gè)便利的 SQLiteOpenHelper 對(duì)象。 // 可能你已經(jīng)注意到了,你并不需要去編寫「CREATE TABLE」這樣的 SQL 語(yǔ)句,因?yàn)?greenDAO 已經(jīng)幫你做了。 // 注意:默認(rèn)的 DaoMaster.DevOpenHelper 會(huì)在數(shù)據(jù)庫(kù)升級(jí)時(shí),刪除所有的表,意味著這將導(dǎo)致數(shù)據(jù)的丟失。 // 所以,在正式的項(xiàng)目中,你還應(yīng)該做一層封裝,來(lái)實(shí)現(xiàn)數(shù)據(jù)庫(kù)的安全升級(jí)。 mHelper = new DaoMaster.DevOpenHelper(this, "notes-db", null); db = mHelper.getWritableDatabase(); // 注意:該數(shù)據(jù)庫(kù)連接屬于 DaoMaster,所以多個(gè) Session 指的是相同的數(shù)據(jù)庫(kù)連接。 mDaoMaster = new DaoMaster(db); mDaoSession = mDaoMaster.newSession();}public DaoSession getDaoSession() { return mDaoSession;}public SQLiteDatabase getDb() { return db; }}獲取UserDao對(duì)象:
mUserDao = MyApplication.getInstances().getDaoSession().getUserDao();簡(jiǎn)單的增刪改查實(shí)現(xiàn):
1. 增
mUser = new User((long)2,"anye3");mUserDao.insert(mUser);//添加一個(gè)2. 刪
mUserDao.deleteByKey(id);3. 改
mUser = new User((long)2,"anye0803");mUserDao.update(mUser);4. 查
List<User> users = mUserDao.loadAll();String userName = "";for (int i = 0; i < users.size(); i++) { userName += users.get(i).getName()+",";}mContext.setText("查詢?nèi)繑?shù)據(jù)==>"+userName);更多的操作就不一一介紹了,大家可以根據(jù)需要去查找資料;
greendao中的注解
(一) @Entity 定義實(shí)體@nameInDb 在數(shù)據(jù)庫(kù)中的名字,如不寫則為實(shí)體中類名@indexes 索引@createInDb 是否創(chuàng)建表,默認(rèn)為true,false時(shí)不創(chuàng)建@schema 指定架構(gòu)名稱為實(shí)體@active 無(wú)論是更新生成都刷新(二) @Id(三) @NotNull 不為null(四) @Unique 唯一約束(五) @ToMany 一對(duì)多(六) @OrderBy 排序(七) @ToOne 一對(duì)一(八) @Transient 不存儲(chǔ)在數(shù)據(jù)庫(kù)中(九) @generated 由greendao產(chǎn)生的構(gòu)造函數(shù)或方法
結(jié)束語(yǔ)
總體來(lái)說(shuō),GreenDao3.0在配置上相對(duì)于2.0要簡(jiǎn)單的多。本文 Demo 下載鏈接:https://github.com/anye0803/GreenDao/,,如果喜歡的話可以star一下。本教程旨在介紹 greenDAO3.0的基本用法與配置,更高級(jí)與詳細(xì)的使用,請(qǐng)參見官網(wǎng)如本文有任何問(wèn)題歡迎指正。