1. 程式人生 > >GreenDao數據庫的簡單使用

GreenDao數據庫的簡單使用

接下來 字段 nic style splay app clas 例如 ger

在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的簡單使用。

 

 

GreenDao數據庫的簡單使用