GreenDao是目前比较流行的Orm框架,GreenDao的文档和支持率比较高,GreenDao采用了大量的注解,省去了新建项目的繁琐,使用起来更加简洁明了,今天有时间学习一下顺便分享一下用法和遇到的坑。
greenDao是一个将对象映射到SQlite数据库中的轻量且快速的ORM解决方案。优势在于简洁的库,性能最大化,内存开销最小化,对android进行高度的优化
1.首先gradle引入
compile 'org.greenrobot:greendao:3.2.0' //<-- add plugin compile 'org.greenrobot:greendao-generator:3.0.0'
apply plugin: 'org.greenrobot.greendao' greendao { schemaVersion 1 daoPackage 'com.anye.greendao.gen' targetGenDir 'src/main/java' }
这里一定要在工程的build.gradle里面配置
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1'//GreenDao
}
}
2 创建实体注解
package com.bajiemaimeng.greendaomanager.entry; import org.greenrobot.greendao.annotation.Entity; import org.greenrobot.greendao.annotation.Id; import org.greenrobot.greendao.annotation.Transient; import org.greenrobot.greendao.annotation.Generated; /** * 作者:陈鹤 on 2018/3/30. * 版本:v1.0 */ @Entity public class User { @Id private Long id; private String name; @Transient private int tempUsageCount; // not persisted public String getName() { return this.name; } public void setName(String name) { this.name = name; } public Long getId() { return this.id; } public void setId(Long id) { this.id = id; } @Generated(hash = 873297011) public User(Long id, String name) { this.id = id; this.name = name; } @Generated(hash = 586692638) public User() { } }
schema:告知GreenDao当前实体属于哪个schema
active:标记一个实体处于活动状态,活动实体有更新、删除和刷新方法
nameInDb:在数据中使用的别名,默认使用的是实体的类名
indexes:定义索引,可以跨越多个列
createInDb:标记创建数据库表
获取对象
mUserDao = GreenDaoHelper.getDaoSession().getUserDao();
//1. 增 // // mUser = new User((long)2,"anye3"); // mUserDao.insert(mUser);//添加一个 // 2. 删 // // mUserDao.deleteByKey(id); // 3. 改 // // mUser = new User((long)2,"anye0803"); // mUserDao.update(mUser); // 4. 查 // // List<User> users = mUserDao.loadAll(); // String userName = ""; // for (int i = 0; i < users.size(); i++) { // userName += users.get(i).getName()+","; // }