classpath'org.greenrobot:greendao-gradle-plugin:3.2.2'
applyplugin: 'org.greenrobot.greendao'
daoPackage'com.example.greendaotest.database' //设置时生成代码的目录
targetGenDir 'src/main/java' //设置DaoMaster、DaoSession、Dao目录
compile 'org.greenrobot:greendao:3.2.2'
GreenDao是一个将对象映射到SQLite数据库中的轻量且快速的ORM数据库框架,本文将讲解如何集成GreenDao3.0环境,如何使用GreenDao自动生成代码及注解的使用。GreenDao GitHub
GreenDao相较于ORMLite等其他数据库框架有以下优势:
而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")。
@Generated:为build之后GreenDao自动生成的注解,为防止重复,每一块代码生成后会加个hash作为标记。
@ToMany:定义与多个实体对象一对多的关联,referencedJoinProperty为外键约束。
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(); }
l noteq与eq相反,判断值是否不等,通常用来模糊查找,返回指定类型的集合。
l like相当于通配符查询,包含查询值的实体都会返回,同样模糊查找,返回指定类型的集合。
分别对应方法: >:gt() <: lt() >=: ge() <=: le()
List<**> list = **Dao.queryBuilder().where(***) .orderAsc(**Dao.Properties.**) .list();
//修改属性 对象.set**() //进行更新 **Dao.update(对象);