GreenDao數據庫的簡單使用


在app項目下的build.gradle中,  先添加插件    apply plugin: 'org.greenrobot.greendao'
              再添加依賴包    compile 'org.greenrobot:greendao:3.2.2'
在project中的build.gradle中,添加倉庫    repositories{  mavenCentral()  }    在dependencies中添加依賴{  classpath 'org.greenrobot:greendao-gradle-plugin:3.2.0'  }

              再添加一個全工程的倉庫allprojects {  repositories {  jcenter()   maven { url "https://jitpack.io" }  }  }

這樣GreenDao依賴包中就添加完成了,接下來就是去創建數據庫表,在表中添加數據。

有一個GreenDaoManager類,這個類提供一個session,通過這個對象得到表對象,然后去操作數據庫。直接copy過去使用就可以了。

 

public class GreenDaoManager {
private DaoMaster mDaoMaster;
private DaoSession mDaoSession;
private static GreenDaoManager mInstance; //單例
private GreenDaoManager(){
DaoMaster.DevOpenHelper devOpenHelper = new
DaoMaster.DevOpenHelper(MyApplication.getContext(), "user-db", null);//此處為自己需要處理的表
mDaoMaster = new DaoMaster(devOpenHelper.getWritableDatabase());
mDaoSession = mDaoMaster.newSession();
}

public static GreenDaoManager getInstance() {
if (mInstance == null) {
synchronized (GreenDaoManager.class) {//保證異步處理安全操作

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;
}
}

創建一個db文件夾,在文件夾中再創建一個dao文件夾,  在這里面就要寫數據庫對應的bean,GreenDaoManager也放到里面,比較容易找到

 

@Entity
public class UserBean {

 

    @Id(autoincrement = true)
Long id;

@Unique
private String fromUserName;



@ToMany(joinProperties = {
@JoinProperty(name = "fromUserName", referencedName = "contactionFromUserName")
})
List<ContactionBean> contactionBeanList;

@ToMany(joinProperties = {
@JoinProperty(name = "fromUserName", referencedName = "msgFromUserName")
})
List<MsgBean> msgBeanList;
}

UserBean對應一個數據庫中的一張表。   id的標注說明是主鍵,  fromUserName的標注是不能重復, contactionBeanList,對應的是一個表,msgBeanList對應一個表,里面表字段對應的fromUserName和UserName中的fromUserName是對應的外鍵約束,可以關聯查詢兩張表,是一對多的情況。

 

@Entity
public class MsgBean {

 

 @Id(autoincrement = true)
Long id;
String msgFromUserName;
String groupMumber;
String msgType;
String msgID;
String toUserName;
String time;
String content;
String location;
String flag;
String sendFlag;
String sendOrReceiver;
}

@Entity
public class ContactionBean {
@Id(autoincrement = true)
Long id;
String contactionFromUserName;
String encryChatRoomId;
String headImgUrl;
String memberCount;
String nickName;
String remakeName;
String groupMumberUserName;
String groupMumberNickName;
String groupMumberDisplayName;
}

這是UserName對應的聯系人表和消息表,@Entity一定要加

這些完成后,make一下工程,greendao就會自動幫我們生成set,get代碼,並basedata文件夾下創建好數據庫,和表。

使用:

  因為插入數據是隨時隨地的,所以最好在Myapplication中配置GreenDaoManager,這樣直接可以拿到數據庫管理對象。

 

private static GreenDaoManager mGreenDaoManageer;

 

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

public static UserBeanDao getUserDao(){
return mGreenDaoManageer.getSession().getUserBeanDao();
}
public static MsgBeanDao getMsgDao(){
return mGreenDaoManageer.getSession().getMsgBeanDao();
}
public static ContactionBeanDao getContactionDao(){
return mGreenDaoManageer.getSession().getContactionBeanDao();
}

這樣我就可以隨時隨地的通過MyApplication的static方法,拿到數據庫的管理類了,對應上面三張表。

下面貼出我使用的添加,刪除,修改,查找數據的方法,這邊就比較簡單,使用到的朋友自己研究一下就可以了。

添加:     分為兩種,一種是添加一條數據,一種是添加一堆數據,添加一堆數據GreenDao使用了數據庫事務,數據比較安全,而且添加比較快,數據量比較大的情況下,建議使用添加一堆數據的方法。

  比如添加一個msg,   MyApplication.getMsgDao().insert(msgBean);    msgBean對應MsgBean對象。  數據通過set方法添加。
    添加一堆數據,  MyApplication.getContactionDao().insertInTx(contactionBeanList);    傳遞一個對應的集合進來就Ok了,他會把整個集合添加到里面。
  正常使用會有MyApplication.getContactionDao().insertOrReplace() 這樣一個方法,如果相同的字段,可以進行替換,而不是添加,例如有人創建表,字段不能重復。這樣添加數據最好使用此方法,防止報錯。

刪除:    也分為兩種,一種是刪除全部數據,一種是刪除一條或者符合條件的幾條數據。
    刪除全部數據: MyApplication.getMsgDao().deleteAll();
    刪除對應的數據:是先查詢到數據,查詢到后,再去遍歷刪除數據;
    如果刪除一條數據:MyApplication.getMsgDao().delete(msgBean);
    如果刪除一堆數據:MyApplication.getMsgDao().deleteInTx(list);

修改:  修改和刪除邏輯差不多,先查到數據,查到對應的數據后,通過對象中的set方法對數據進行修改,修改完成后通過update方法來修改數據庫

     如果修改一條數據: MyApplication.getMsgDao().update(msgBean);

     如果修改一堆數據:  MyApplication.getMsgDao().updateInTx(list);
    

查找:   先要得到數據表的查找對象  QueryBuilder<ContactionBean> contactionBeanQueryBuilder = MyApplication.getContactionDao().queryBuilder();

      拿到這對象后,就可以用過where添加查找的條件,可以添加多個查找條件,排序,分組,都可以,查找的方法很多,里面封裝的也比較全部,我只是簡單的使用,如果復雜的使用需要大家自己研究,主要需要的到數據庫表的查詢對象。

    contactionBeanQueryBuilder.where(ContactionBeanDao.Properties.ContactionFromUserName.eq(chatUsername),ContactionBeanDao.Properties.HeadImgUrl.isNotNull());
    list = contactionBeanQueryBuilder.list();

    list就是我們查詢到的數據集合,如果只查詢一條數據,那么集合的size就是1.

以上就是我的GreenDao的簡單使用。

 

 

 

 

 

 

 

 


免責聲明!

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



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