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也放到里面,比较容易找到

@Entitypublic 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是对应的外键约束,可以关联查询两张表,是一对多的情况。

@Entitypublic 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;}
@Entitypublic 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;
@Overridepublic 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的简单使用。

 
 
时间: 2024-12-24 15:26:12

GreenDao数据库的简单使用的相关文章

mysql数据库很简单操作

进入linux系统 root   >/usr/bin/mysql -u root mysql>show databases;                    #查看数据库 mysql>use  testtable;                        #testtable 为所要查看的库,应用数据库 mysql>show tables;                          #查看所有表 mysql>desc abc_table          

FMDB数据库的简单实用

引入和FMDB第三方类库,  demo地址:http://pan.baidu.com/s/1c0pbfxA 1 #define dataBasePath [[(NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask,YES)) lastObject]stringByAppendingPathComponent:dataBaseName] 2 #define dataBaseName @"MyDatabase

数据库中简单的增删改查(CRUD)

一切都是基于数据,而对数据的管理都离不开数据库.最近学到数据库的简单操作,所以写下这篇文章,总结一下学习到的知识.浅陋之处,多多见谅. 补充一下:一直弄不清SQL Server,Mysql ,以及Oracle的关系.SQL Server是微软的,因为微软系统的市场占有额,所以这款软件在市场上也占用很大份额,而Mysql是一款开源免费的数据库,我们知道关系型数据库最开始是IBM的一个实验室提出的理论,但是当时并没有被IBM公司重视,被Oracle的创始人劳伦斯·埃里森重视,发展壮大起来.但是Ora

泄露QQ群数据库之简单分析(QQ数据库.7z.001-006)

笔者心血来潮, 网上下来QQ泄露的群数据库. 压缩文件, 总计 24.5GB, 解压后90+G. 包含两部分信息: 群信息 + 群内成员信息 挂载部分数据库 群信息-1, 群信息数据采用分库分表的方式处理持续增长的数据信息,可扩展性不成问题.一个库包含10张表, 每张表数据量上限100W左右. 群信息-2,只包含基本信息, 群号,Title, 描述 群成员信息-1, 同样采用分库分表, 一库对应100张表. 群成员信息-2, 只包含简单的群组对应关系,没有任何密码之类的泄露. 1. 数据库是SQ

分享哈我测试MongoDB数据库的简单代码

原文:分享哈我测试MongoDB数据库的简单代码 源代码下载地址:http://www.zuidaima.com/share/1550463424236544.htm 分布式文件存储系统,MongoDB部署安装具体可以参照: http://www.cnblogs.com/mecity/archive/2011/06/11/2078527.html Demo实现了从txt文件中逐行读取数据,存放到MongoDB数据库中的. 可参照其它Demo代码 这是一套基于Spring, Hibernate,

AXIS2+Myeclipse实现WebService数据库存储简单实例

AXIS2+Myeclipse实现WebService数据库存储简单实例 接了个简单的毕业设计.需要WebService实现前台显示后台数据库存储,本人菜鸟,想了下,决定服务端存放有数据库连接的方法,客户端调用服务端提供的方法,实现与数据库的连接. 一.准备工作: 1.下载AXIS2框架 这里使用的版本是axis2-1.7.2,下载地址:http://axis.apache.org/axis2/java/core/download.cgi官网. (1)Binary distribution ax

列式数据库的简单分析

转自:列式数据库的简单分析 这些天看数据仓库的内容,发现一个新内容——列式存储.曾经有想过把数据库行列转置作成索引,不过没有深想,没想到列式数据库已经开始发展起来了.首先看下WIKI上对列式数据库的解释: 列式数据库是以列相关存储架构进行数据存储的数据库,主要适合与批量数据处理和即席查询.相对应的是行式数据库,数据以行相关的存储体系架构进行空间分配,主要适合与小批量的数据处理,常用于联机事务型数据处理.数据库以行.列的二维表的形式存储数据,但是却以一维字符串的方式存储,例如以下的一个表:EmpI

Java连接MySQL数据库及简单操作代码

1.Java连接MySQL数据库 Java连接MySql需要下载JDBC驱动MySQL-connector-java-5.0.5.zip(举例,现有新版本).然后将其解压缩到任一目录.我是解压到D盘,然后将其目录下的MySQL-connector-java-5.0.5-bin.jar加到classpath里,具体如下: "我的电脑"-> "属性" -> "高级" -> "环境变量",在系统变量那里编辑clas

GreenDAO数据库版本升级

GreenDAO是一款非要流行的android平台上的数据库框架,性能优秀,代码简洁. 初始化数据库模型代码的时候需要使用java项目生成代码,依赖的jar包已经上传到我的资源里了,下载地址如下:http://download.csdn.net/detail/fancylovejava/8859203 项目开发中用到的就是GreenDAO数据库框架,需要进行数据库版本升级. 其实数据库版本升级比较麻烦的就是数据的迁移,data migration. 数据库版本升级有很多方法,按不同需求来处理.