wangchang163 / GreenDao_Android

GreenDao数据库的增删改查使用以及版本升级解决办法

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

GreenDao_Android

封装GreenDao数据库的增删改查使用以及版本升级解决办法

优势

性能(可能是Android最快的ORM):我们的基准也是开源的易于使用的功能强大的API涵盖关系和联接最小的内存消耗 大小(<100KB):以保持建筑时间低,并避免65k方法限制 数据库加密:greenDAO支持SQLCipher,以保护用户的数据安全 强大的社区:超过5.000 GitHub明星表明有一个强大和积极的社区

使用

step1:

在project.gradle添加

// In your root build.gradle file:
buildscript {
    repositories {
        jcenter()
        mavenCentral() // add repository
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.3.0'
        classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin
    }
}

step2:

在app.gradle添加

apply plugin: 'org.greenrobot.greendao'

//数据库版本号以及文件路径
greendao{
    schemaVersion 3
    targetGenDir 'src/main/java'
}


 // database
 compile 'org.greenrobot:greendao:3.2.0'
 //可视化数据库调试工具
 debugCompile 'com.amitshekhar.android:debug-db:1.0.1'

增删改查封装

增(insert)

方法名 介绍
insert 插入一条数据
insertInTx 插入一条或多条数据
insertOrReplace 插入或替换
insertOrReplaceInTx 插入或替换一条或者多条数据

删(delete)

方法名 介绍
delete 删除一个对象
deleteAll 删除所有数据
deleteByKey 根据id删除
deleteInTx 删除一个或多个对象
deleteByKeyInTx 根据一个或者多个key删除对象

改(update)

方法名 介绍
update 更改一个对象
updateInTx 更改多个对象
insertOrReplaceInTx 插入或替换一条或者多条数据

查(query)

方法名 介绍
loadAll 查询所有
queryBuilder 根据语法查询

查询条件

//根据id查询
daoSession.getUserDao().queryBuilder().where(UserDao.Properties.Id.eq(id)).build().unique();

eq用来判断两个属性是否对等,unique()返回一个对象

//in查询包含在内的列表
QueryBuilder<User> qb=daoSession.getUserDao().queryBuilder();
qb.where(UserDao.Properties.Id.in(1,2,3,4,5)).build().list();

//获取1970年10月或以后出生的名为“Joe”的用户
QueryBuilder<User> qb = userDao.queryBuilder();
qb.where(Properties.FirstName.eq("Joe"),
qb.or(Properties.YearOfBirth.gt(1970),
qb.and(Properties.YearOfBirth.eq(1970), Properties.MonthOfBirth.ge(10))));
List<User> youngJoes = qb.list();

// order by last name
queryBuilder.orderAsc(Properties.LastName);
 
// in reverse
queryBuilder.orderDesc(Properties.LastName);
 
// order by last name and year of birth
queryBuilder.orderAsc(Properties.LastName).orderDesc(Properties.YearOfBirth);

查询API:

http://greenrobot.org/files/greendao/javadoc/current/org/greenrobot/greendao/query/QueryBuilder.html

创建模型(创建好后,需要编译一下)

参考User类

@Entity 标注此类为数据库支持的实体类 @Id(autoincrement = true) 标注键,作为实体id,自增 @Property 标注属性

参考文档:http://greenrobot.org/greendao/documentation/modelling-entities/

数据库更新

1:修改schemaVersion

greendao{
 schemaVersion 3
 targetGenDir 'src/main/java'
}

2:修改DaoMaster中的SCHEMA_VERSION

 public static final int SCHEMA_VERSION = 3;

3:DbOpenHelper中,如果新版本号大于旧版本,迁移数据库,否则删除重建数据库

 if (newVersion > oldVersion) {
         // 升级、数据库迁移操作
         MigrationHelper.getInstance().migrate(db, UserDao.class);
     }else {
         // 默认操作
         dropAllTables(db, true);
         onCreate(db);
     }

4:编译一下,在运行。

本例将GreenDao进行一定程度上的封装,对于需要用的方法, 在DbHelper中添加相应,在AppDbHelper中实现,在ui中引用,在application中获取AppDbHelper的实例。

效果:

image

About

GreenDao数据库的增删改查使用以及版本升级解决办法


Languages

Language:Java 100.0%