greenDao的使用
本文是greenDao入門教程。
greenDao的高級使用:
http://blog.csdn.net/myrssq/article/details/78425780
http://www.jianshu.com/p/dbec25bd575f
http://www.jianshu.com/p/513fb2ba5485
1.gradle中引入
compile 'org.greenrobot:greendao:3.2.0'
2 gradle配置
//數據庫相關配置
apply plugin: 'org.greenrobot.greendao'
greendao {
schemaVersion 1 //版本號
daoPackage 'com.zjrb.sjzsw.greendao' //自動生成文件的目錄
targetGenDir 'src/main/java' //生成數據庫文件的目錄,默認根目錄
}
3 在工程gradle中配置
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.0'
}
}
4 創建實體類
@Entity
public class User {
@Id
private Long id;
private String name;
private int tempUsageCount; // not persisted
}
5 makeProject
編譯項目,User實體類會自動編譯,生成get、set方法並且會在com.zjrb.sjzsw.greendao目錄下生成三個數據庫文件;
注意:實體類中要添加@Entity標籤,不然編譯的時候不會生成數據庫文件,要設置主鍵 @Id,用於數據庫查詢、刪除等操作
greenDao的使用
application中進行數據庫的初始化
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 getAppContext(){
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;
}
}
獲取newsChannelDao
newsChannelDao = MyApplication.getAppContext().getDaoSession().getNewsChannelDao();
查詢
newsChannelDao.loadAll()
增加
newsChannelDao.insert(new User())
刪除
newsChannelDao.delete(user)
newsChannelDao.deleteById(id)
更新
newsChannelDao.undate(user)
greenDao中的註解
(一) @Entity 定義實體
@nameInDb 在數據庫中的名字,如不寫則爲實體中類名
@indexes 索引
@createInDb 是否創建表,默認爲true,false時不創建
@schema 指定架構名稱爲實體
@active 無論是更新生成都刷新
(二) @Id
(三) @NotNull 不爲null
(四) @Unique 唯一約束
(五) @ToMany 一對多
(六) @OrderBy 排序
(七) @ToOne 一對一
(八) @Transient 不存儲在數據庫中
(九) @generated 由greendao產生的構造函數或方法