關於GreenDao
greenDao是一個將對象映射到SQLite數據庫中的輕量且快速的ORM解決方案。 關於greenDAO的概念可以看官網greenDAO
greenDAO 優勢
1、一個精簡的庫 2、性能最大化 3、內存開銷最小化 4、易於使用的 APIs 5、對 Android 進行高度優化
GreenDao 3.0使用
GreenDao 3.0採用註解的方式來定義實體類,通過gradle插件生成相應的代碼。
一,在as中導入相關的包
compile'org.greenrobot:greendao:3.0.1'
compile'org.greenrobot:greendao-generator:3.0.0'
二,在build.gradle中進行配置:
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--> 指定數據庫schema版本號,遷移等操作會用到;
daoPackage --> dao的包名,包名默認是entity所在的包;
targetGenDir --> 生成數據庫文件的目錄;
四,創建一個User的實體類
@Entity
public class User {
@Id
private Long id;
private String name;
@Transient
private int tempUsageCount; // not persisted
}
五,MakeProject
編譯項目,User實體類會自動編譯,生成get、set方法並且會在com.anye.greendao.gen目錄下生成三個文件;
GreenDao使用
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;
}
/**
* 設置greenDao
*/
private void setDatabase() {
// 通過 DaoMaster 的內部類 DevOpenHelper,你可以得到一個便利的 SQLiteOpenHelper 對象。
// 可能你已經注意到了,你並不需要去編寫「CREATE TABLE」這樣的 SQL 語句,因爲 greenDAO 已經幫你做了。
// 注意:默認的 DaoMaster.DevOpenHelper 會在數據庫升級時,刪除所有的表,意味着這將導致數據的丟失。
// 所以,在正式的項目中,你還應該做一層封裝,來實現數據庫的安全升級。
mHelper = new DaoMaster.DevOpenHelper(this, "notes-db", null);
db = mHelper.getWritableDatabase();
// 注意:該數據庫連接屬於 DaoMaster,所以多個 Session 指的是相同的數據庫連接。
mDaoMaster = new DaoMaster(db);
mDaoSession = mDaoMaster.newSession();
}
public DaoSession getDaoSession() {
return mDaoSession;
}
public SQLiteDatabase getDb() {
return db;
}
}
獲取UserDao對象:
mUserDao = MyApplication.getInstances().getDaoSession().getUserDao();
簡單的增刪改查實現:
1. 增
mUser = new User((long)2,"anye3");
mUserDao.insert(mUser);//添加一個
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("查詢全部數據==>"+userName);
更多的操作就不一一介紹了,大家可以根據需要去查找資料;
greendao中的註解
(一) @Entity 定義實體
@nameInDb 在數據庫中的名字,如不寫則爲實體中類名
@indexes 索引
@createInDb 是否創建表,默認爲true,false時不創建
@schema 指定架構名稱爲實體
@active 無論是更新生成都刷新
(二) @Id
(三) @NotNull 不爲null
(四) @Unique 唯一約束
(五) @ToMany 一對多
(六) @OrderBy 排序
(七) @ToOne 一對一
(八) @Transient 不存儲在數據庫中
(九) @generated 由greendao產生的構造函數或方法
結束語
總體來說,GreenDao3.0在配置上相對於2.0要簡單的多。
本文 Demo 下載鏈接:https://github.com/anye0803/GreenDao/