GreenDao教程1


最近項目重構,涉及到了數據庫和文件下載,發現GreenDao這個框架還是不錯的。直接面向對象的,可以通過對對象的操作,實現數據的存儲。

但是官網上的API是在不敢恭維,文檔寫的很糙,看了半天,才搞懂一系列的流程。在此進行一下紀念。免得那天需要修改的時候,一臉懵逼。直接上干貨

官網地址:http://greenrobot.org/greendao/
Github地址:https://github.com/greenrobot/greenDAO

GreenDao 優點:

1.性能高,號稱Android最快的關系型數據庫
2.內存占用小
3.庫文件比較小,小於100K,編譯時間低,而且可以避免65K方法限制
4.支持數據庫加密 greendao支持SQLCipher進行數據庫加密 有關SQLCipher可以參考這篇博客Android數據存儲之Sqlite采用SQLCipher數據庫加密實戰
5.簡潔易用的API

第一步:將項目需要的工程庫進行引用

注:GreenDao可以自定義數據庫操作對象的路徑示例如下:

此處路徑對應的是APP的gradle文件,android節點內填寫。

屬性介紹:
schemaVersion--> 指定數據庫schema版本號,遷移等操作會用到;
daoPackage --> dao的包名,包名默認是entity所在的包;
targetGenDir --> 生成數據庫文件的目錄;

第二步:創建一個實體類

 1 @Entity
 2 public class ClassInfoBean {
 3     //表ID,是每一條記錄的唯一標識,自增
 4     @Id(autoincrement = true)
 5     private Long tabid;
 6     /** 班型ID */
 7     private Integer classTypeId;
 8     /** 班型編碼 */
 9     private String classTypeCode;
10     /** 班型名稱 */
11     private String classTypeName;
12     /** 分期 */
13     private Integer period;
14     /** 年級 */
15     private Integer gradeId;
16     /** 科目 */
17     private Integer subjectId;
18     /** 學科 */
19     private Integer subjectProductId;
20 }

相關注解說明:

- 實體@Entity注解

schema:告知GreenDao當前實體屬於哪個schema

active:標記一個實體處於活躍狀態,活動實體有更新、刪除和刷新方法

nameInDb:在數據庫中使用的別名,默認使用的是實體的類名

indexes:定義索引,可以跨越多個列

createInDb:標記創建數據庫表

基礎屬性注解

@Id:主鍵 Long 型,可以通過@Id(autoincrement = true)設置自增長

@Property:設置一個非默認關系映射所對應的列名,默認是使用字段名,例如:@Property(nameInDb = “name”)

@NotNull:設置數據庫表當前列不能為空

@Transient:添加此標記后不會生成數據庫表的列

索引注解

@Index:使用@Index作為一個屬性來創建一個索引,通過name設置索引別名,也可以通過unique給索引添加約束

@Unique:向數據庫添加了一個唯一的約束

關系注解

@ToOne:定義與另一個實體(一個實體對象)的關系

@ToMany:定義與多個實體對象的關系

注:定義實體類的時候,不用定義get和set方法。只需寫方法名和相關注解,在后面進行點擊Make Project或者Make Module 'app',就會自動在實體類中生成get和set方法,同時會在自己設定的目錄下看到生成的三個類文件:- DaoMaster- DaoSession- UserDao。(沒有在app的gradle里面設置targetGenDir 路徑的,默認生成目錄如下圖)

第三步:在application中需要初始化數據庫相關操作的對象

 1 private static WeexApplication application;
 2     @Override
 3     public void onCreate() {
 4         super.onCreate();
 5         application = this;
 6         initGreenDao();
 7     }
 8     public static WeexApplication getApplication() {
 9         return application;
10     }
11     private SQLiteDatabase db;
12     private DaoSession mDaoSession;
13     private void initGreenDao() {
14         DaoMaster.DevOpenHelper mHelper;
15         DaoMaster mDaoMaster;
16         // 通過DaoMaster 的內部類 DevOpenHelper,你可以得到一個便利的SQLiteOpenHelper 對象。
17         // 可能你已經注意到了,你並不需要去編寫「CREATE TABLE」這樣的 SQL 語句,因為greenDAO 已經幫你做了。
18         // 注意:默認的DaoMaster.DevOpenHelper 會在數據庫升級時,刪除所有的表,意味着這將導致數據的丟失。
19         // 所以,在正式的項目中,你還應該做一層封裝,來實現數據庫的安全升級。
20         mHelper = new DaoMaster.DevOpenHelper(this, "notes-db", null);
21         db = mHelper.getWritableDatabase();
22         // 注意:該數據庫連接屬於DaoMaster,所以多個 Session 指的是相同的數據庫連接。
23         mDaoMaster = new DaoMaster(db);
24         mDaoSession = mDaoMaster.newSession();
25     }
26     public DaoSession getDaoSession() {
27         return mDaoSession;
28     }
29     public SQLiteDatabase getDb() {return db;}

 

至此greendao的使用的相關配置已經全部配置完畢。下次會為大家介紹通過使用greenDao來實現數據庫的增刪改查等操作。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM