GreenDao3.0學習(二)

這一章主要介紹greendao的註解已經成功生成數據庫和數據表

在前面一篇GreenDao3.0學習(一)中,咱們對GreenDao3.0進行了簡單的瞭解,並對GreenDao3.0在android studio中的配置過程進行了簡單的說明。在上一篇中,咱們自動生成 了三個java文件,特別是UserBeanDao.java,爲何會生成這個文件呢??
這篇文章咱們主要對這點進行說明,java

相關注解及說明

@Entity,沒錯,就是它,由於有了它,咱們的實體類就會被greendao3.0識別,而後自動生成一個UserBeanDao.java。android

註解名稱 說明
schema 使得GreenDao知道當前實體屬於哪一個schema
active 標記一個實體處於活動狀態,活動實體有更新、刪除和刷新方法
nameInDb 在數據中使用的別名,默認使用的是實體的類名
indexes 定義索引,能夠跨越多個列
createInDb 標記建立數據庫表
@Entity greendao的一個實體註解,由於有了它,咱們的實體類纔回被greendao識別並生成一個dao
@Id 主鍵 Long型(默認是自增加的)也能夠經過@Id(autoincrement = true)設置自增加
@Property 置一個非默認關係映射所對應的列名,默認是的使用字段名 好比:@Property (nameInDb="name")
@NotNull @NotNull 標記後,表示這個屬性在數據表中的這一列不能爲空
@Transient 添加這個標記以後,咱們在實體類中的屬性不會自動在數據表中生成這個屬性表示的這一列
@Index 使用@Index做爲一個屬性來建立一個索引,經過name設置索引別名,也能夠經過unique給索引添加約束
@Unique 向數據庫列添加了一個惟一的約束
@ToOne 定義與另外一個實體(一個實體對象)的關係,即一對一
@ToMany 定義與多個實體對象的關係 即一對多
@JoinEntity 多對多
referencedJoinProperty 指定目標實體中與源實體相對應的外鍵。
joinProperty 對於複雜一點的關係能夠定義一組@JoinProperty註解。每一個@JoinProperty註解都須要有源實體中的源屬性和對應實體中的引用屬性。

示例:

首先咱們須要建立一個數據庫 這裏咱們用一個GreenDaoManager.java類來管理數據庫。

public class GreenDaoManager {
    private static GreenDaoManager mInstance;
    private DaoMaster mDaoMaster;
    private DaoSession mDaoSession;
    private DaoMaster.DevOpenHelper devOpenHelper;


    public GreenDaoManager() {
        //建立一個數據庫

         devOpenHelper = new DaoMaster.DevOpenHelper(MyApplication.getContext(), "greendao-db", null);
        DaoMaster mDaoMaster = new DaoMaster(devOpenHelper.getWritableDatabase());
        mDaoSession = mDaoMaster.newSession();
    }

    public static GreenDaoManager getInstance() {
        if (mInstance == null) {
            mInstance = new GreenDaoManager();
        }
        return mInstance;
    }

    public DaoMaster getMaster() {
        return mDaoMaster;
    }

    public DaoSession getSession() {
        return mDaoSession;
    }

    public DaoSession getNewSession() {
        mDaoSession = mDaoMaster.newSession();
        return mDaoSession;
    }

    /**
     * 關閉數據鏈接
     */
    public void close() {
        if (devOpenHelper != null) {
            devOpenHelper.close();
        }
    }
}

這裏會有一個application ,以下:git

public class MyApplication extends Application {
    private static Context mContext;

    @Override
    public void onCreate() {
        super.onCreate();
        mContext = getApplicationContext();
        GreenDaoManager.getInstance();
    }

    public static Context getContext() {
        return mContext;
    }
}

注意不要忘了在AndroidManifest.xml中處理:github

而後咱們運行程序,就能夠看生成了一個數據庫數據庫


如今咱們導出來看看裏面是什麼。segmentfault


咱們能夠看到生成了數據表,而且裏面的列的名就是咱們自動生成的Dao中的名稱。
咦~,等等,好像有什麼不對,
咱們看看咱們的UserBean1.java文件,app


age怎麼沒有生成呢 ?這就是@Transient的做用了,
好了,如今咱們的數據庫以及數據表已經生成,至於其餘註解,咱們能夠參照官網一個一個去試試。。。
特別提醒:自增加的Id必定是Long類型的
項目相關地址:https://github.com/mutounaodai/Greendaoide

相關文章
相關標籤/搜索