GreenDao笔记

依赖

//根gradle

classpath'org.greenrobot:greendao-gradle-plugin:3.2.2'

//app gradle

applyplugin: 'org.greenrobot.greendao'

greendao {

    schemaVersion 1 //数据库版本号

    daoPackage'com.example.greendaotest.database' //设置时生成代码的目录

    targetGenDir 'src/main/java' //设置DaoMaster、DaoSession、Dao目录

}

dependencies{

   compile 'org.greenrobot:greendao:3.2.2'

}

 

GreenDao简介

 

GreenDao是一个将对象映射到SQLite数据库中的轻量且快速的ORM数据库框架,本文将讲解如何集成GreenDao3.0环境,如何使用GreenDao自动生成代码及注解的使用。GreenDao GitHub

 

GreenDao3.0优势

GreenDao相较于ORMLite等其他数据库框架有以下优势:

1.     一个精简的库

2.     性能最大化

3.     内存开销最小化

4.     易于使用的 APIs

5.     对 Android 进行高度优化

而GreenDao3.0的版本主要使用注解方式定义实体类,通过gradle插件生成相应的代码。

 

用法:

类注解

@Entity(         schema = "myschema",         active = true,                nameInDb ="AWESOME_USERS",        createInDb = true )

 

@Entity:用于标识当前实体需要GreenDao生成代码。

schema:项目中存在多个Schema时,表明当前实体属于哪个Schema。

active:标记实体是否处于活动状态,活动状态才支持更新删除刷新等操作。

nameInDb:存储在数据库中的表名,不写默认与类名一致。

createInDb:标记创建数据库表,若有多个实体关联此表可设为false避免重复创建,默认为true。

 

 

属性注解

@Id :主键Long型,可以通过@Id(autoincrement= true)设置自增长。

@Property:设置一个非默认关系映射所对应的列名,默认是的使用字段名例如@Property (nameInDb="name")。

@NotNul:设置数据库表当前列不能为空。

@OrderBy:指定排序。

@Transient:添加此标记之后不会生成数据库表的列。

@Generated:为build之后GreenDao自动生成的注解,为防止重复,每一块代码生成后会加个hash作为标记。

 

 

------------

@ToMany:定义与多个实体对象一对多的关联,referencedJoinProperty为外键约束。

 

 

Query

主键

load(Longkey)

loadAll()

 

查询

Query query= employeeDao.queryBuilder() .where(**.Properties.**.eq(**),   **.Properties.**.ge(**)) .build();

 

子线程查询

privatevoid queryThread() {     final Queryquery = **Dao.queryBuilder().build();    new Thread(){         @Override         public void run() {             List list =query.forCurrentThread().list();        }     }.start(); }

 

 

查询条件判断

 

eq,noteq与like查询

 

l eq判断值是否相等

l noteq与eq相反,判断值是否不等,通常用来模糊查找,返回指定类型的集合。

l like相当于通配符查询,包含查询值的实体都会返回,同样模糊查找,返回指定类型的集合。

 

>、<、>=、<=查询

分别对应方法:   >:gt()   <: lt()   >=: ge()  <=: le()

 

isNull与isNotNull

为空与不为空,判断数据库中有无数据。

 

排序

对查询结果进行排序,有升序与降序。

List<**> list = **Dao.queryBuilder().where(***) .orderAsc(**Dao.Properties.**) .list();

 

删除

**Dao.deleteAll()

**Dao.deleteBykey(Long key)

**Dao.delete(对象)

 

更新

  //修改属性         对象.set**()   //进行更新         **Dao.update(对象); 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值