博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
GreenDao数据库的简单使用
阅读量:5113 次
发布时间:2019-06-13

本文共 4722 字,大约阅读时间需要 15 分钟。

在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
contactionBeanList; @ToMany(joinProperties = { @JoinProperty(name = "fromUserName", referencedName = "msgFromUserName") }) List
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的简单使用。

 

 

 

 

 

 

 

 

转载于:https://www.cnblogs.com/wlwqnj/p/7419548.html

你可能感兴趣的文章
洛谷 1449——后缀表达式(线性数据结构)
查看>>
Data truncation: Out of range value for column 'Quality' at row 1
查看>>
Dirichlet分布深入理解
查看>>
(转)Android之发送短信的两种方式
查看>>
字符串处理
查看>>
HtmlUnitDriver 网页内容动态抓取
查看>>
ad logon hour
查看>>
获得进程可执行文件的路径: GetModuleFileNameEx, GetProcessImageFileName, QueryFullProcessImageName...
查看>>
证件照(1寸2寸)拍摄处理知识汇总
查看>>
罗马数字与阿拉伯数字转换
查看>>
Eclipse 反编译之 JadClipse
查看>>
Python入门-函数
查看>>
[HDU5727]Necklace(二分图最大匹配,枚举)
查看>>
距离公式汇总以及Python实现
查看>>
设计模式之装饰者模式
查看>>
一道不知道哪里来的容斥题
查看>>
Blender Python UV 学习
查看>>
window添加右键菜单
查看>>
入手腾龙SP AF90mm MACRO
查看>>
Window7上搭建symfony开发环境(PEAR)
查看>>