GreenDao的使用簡介
1簡介
greenDAO功能
物件/關係對映(ORM)
greenDAO Android ORMgreenDAO的本質是為儲存在關聯式資料庫SQLite中的資料提供一個物件導向的介面。只需定義資料模型,greenDAO將建立Java資料物件(實體)和DAO(資料訪問物件)。這將為您節省很多無聊的程式碼,只是來回移動資料。除此之外,greenDAO還提供了一些高階的ORM功能,如會話快取,預先載入和活動實體。
2
- 效能最高(可能是Android上最快的ORM); 我們的基準測試也是開源的
- 易於使用強大的API覆蓋關係和聯接
- 最小的記憶體消耗
- 小型庫(<100KB)可以保持較低的構建時間,並避免65k方法的限制
- 資料庫加密:greenDAO支援SQLCipher保證使用者資料安全
- 強大的社群:超過5000個GitHub明星表明,這裡有一個強大而活躍的社群
3大致結構
DaoMaster:Dao中的管理者。它儲存了sqlitedatebase物件以及操作DAO classes(注意:不是物件)。其提供了一些建立和刪除table的靜態方法,其內部類OpenHelper和DevOpenHelper實現了
SQLiteOpenHelper,並建立資料庫的框架。
DaoSession:會話層。操作具體的DAO物件(注意:是物件),比如各種getter方法。
XXXDao:實際生成的某某DAO類,通常對應具體的java類,比如NoteDao等。其有更多的許可權和方法來運算元據庫元素。
XXXEntity:持久的實體物件。通常代表了一個資料庫row的標準java properties。
4以下是一些使用
首先在工程的build.gradle新增
buildscript {
repositories {
google()
jcenter()
mavenCentral() // add repository 需要新增的倉庫
}
dependencies {
classpath 'com.android.tools.build:gradle:3.0.0'
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin 需要新增的依賴
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
5然後專案的build.gradle新增
apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao' // apply plugin需要新增的外掛
android {
...
}
//對greendao的設定
greendao {
schemaVersion 2
daoPackage 'com.wyj.test.greendao'//設定DaoMaster、DaoSession、Dao包名
targetGenDir 'src/main/java'//設定DaoMaster、DaoSession、Dao目錄即在什麼目錄下生成
}
dependencies {
...
...
compile 'org.greenrobot:greendao:3.2.2' // add library 需要新增的依賴新增
}
6建立實體類
@Entity//表示這個實體類一會會在資料庫中生成對應的表
public class User {
@Id //表示該欄位是id,注意該欄位的資料型別為包裝型別Long
private Long id;
@Property(nameInDb = "NAME")//表示該屬性將作為表的一個欄位,其中nameInDb看名字就知道這個屬性在資料庫中對應的資料名稱
private String name;
@Transient //註解表示這個屬性將不會作為資料表中的一個欄位
private int tempUsageCount; // not persisted
}
7生成程式碼 點選build下的make project 快捷鍵 (Ctrl+F9)
8使用 單例
步驟:即:先建立了一個SQLiteOpenHelper並建立連線到一個具體資料庫;再根據具體的datebase建立一個master物件用於;最後通過master建立一個資料庫的會話操作。
程式碼
public class MyApp extends Application {
public static final boolean ENCRYPTED = true;
private DaoSession daoSession;
@Override
public void onCreate() {
super.onCreate();
DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "notes-db");
Database db = helper.getWritableDb();
daoSession = new DaoMaster(db).newSession();
}
public DaoSession getDaoSession() {
return daoSession;
}
}
9呼叫
DaoSession daoSession = ((MyApp) getApplication()).getDaoSession();
// do this in your activities/fragments to get hold of a DAO
userDao = daoSession.getUserDao();
簡單的增刪改查
//增
User user = new User(null, "123" + i);
userDao.insert(user);
//刪
userDao.deleteByKey((long) i);
//改
User mUser = new User((long) 2, "anye0803");
//查
List<User> users = userDao.loadAll();
String userName = "";
for (int i = 0; i < users.size(); i++) {
userName += users.get(i).getName() + ",";
}
tv.setText("全部資料"+userName);
greendao中的註解
(一) @Entity 定義實體
@nameInDb 在資料庫中的名字,如不寫則為實體中類名
@indexes 索引
@createInDb 是否建立表,預設為true,false時不建立
@schema 指定架構名稱為實體
@active 無論是更新生成都重新整理
(二) @Id
(三) @NotNull 不為null
(四) @Unique 唯一約束
(五) @ToMany 一對多
(六) @OrderBy 排序
(七) @ToOne 一對一
(八) @Transient 不儲存在資料庫中
(九) @generated 由greendao產生的建構函式或方法
資料庫升級
首先在module的gradle檔案中修改版本號:
greendao {
schemaVersion 2//修改此值
}
修改實體類
@Entity
public class User {
@Property
private int age;
@Property
private String password;
@Id
private Long id;
@Property(nameInDb = "USERNAME")
private String username;
@Property(nameInDb = "NICKNAME")
private String nickname;
}
然後重新編譯
基本就是這樣如果還不滿意有官方的api和GitHub連結可以自己研究研究
相關文章
- 第三方資料庫框架 - GreenDao簡介資料庫框架
- Jira使用簡介 HP ALM使用簡介
- Disruptor 使用簡介
- dremio使用簡介REM
- pipenv 使用簡介
- Git 使用簡介Git
- Python中的psutil使用簡介Python
- ORM框架之GreenDao3.0使用詳解(二)ORM框架
- GreenDao存List案例
- BPMN 2.0使用簡介
- Jumpserver簡介,部署使用Server
- openvas簡介及使用
- JQuery簡介與使用jQuery
- Apache Hudi使用簡介Apache
- Flyway簡介及使用
- Systemd簡介與使用
- SVG Sprite 使用簡介SVG
- React的Context的使用方法簡介ReactContext
- OpenCV中使用SVM簡介OpenCV
- Hystrix Turbine簡介與使用
- Spring Cloud Gateway使用簡介SpringCloudGateway
- CentOS 7 firewalld使用簡介CentOS
- JSON簡介(java中的json庫使用)JSONJava
- RxCache 整合 Android 的持久層框架 greenDAO、RoomAndroid框架OOM
- C#中的char和string的使用簡介C#
- svg01——svg簡介及簡單使用SVG
- GPU破解神器Hashcat使用簡介GPU
- jQuery-簡介與基本使用jQuery
- Locust 簡介及安裝使用
- Git 簡介與倉庫使用Git
- RabbitMQ 簡介以及使用場景MQ
- iOS CocoaPods簡介及基本使用iOS
- Instruments使用指南(一)--- 簡介
- 專案中使用SVN簡介
- 簡單介紹標準庫fmt的基本使用
- spark 的簡介Spark
- Hudson的簡介
- SVN的簡介
- Kubernetes簡介以及如何使用YAML配置?YAML