依赖
//根gradle
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2'
//app gradle
apply plugin: 'org.greenrobot.greendao'
greendao {
schemaVersion 1 //数据库版本号
daoPackage '包名.database' //设置时生成代码的目录
targetGenDir 'src/main/java' //设置DaoMaster、DaoSession、Dao目录
}
dependencies {
compile 'org.greenrobot:greendao:3.2.2'
}
用法:
类注解
@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作为标记。
>: gt()
<: lt()
>=: ge()
<=: le()
public class DaoManager {
private final DaoSession daoSession;
//提供一个本地的DaoManager
private static DaoManager daoManager;
//单例模式
//首先私有化构造方法
private DaoManager(Context context){
daoSession = DaoMaster.newDevSession(context, "bw.db");
}
//提供公共的本地的静态方法
public static DaoManager getinterface(Context context){
//DCL模式
if (daoManager==null){
synchronized (DaoManager.class){
if (daoManager==null){
daoManager = new DaoManager(context);
}
}
}
return daoManager;
}
//为其设置单利
public DaoSession daoSession(){
return daoSession;
}
}
//调用其方法
daoSession = DaoManager.getinterface(this).daoSession();
personDao = daoSession.getPersonDao();
//增加方法
personDao.insert();
// 排序
对查询结果进行排序,有升序与降序。
List<**> list = **Dao.queryBuilder()
.where(***)
.orderAsc(**Dao.Properties.**)
.list();
//删除
.deleteAll()
.deleteBykey(Long key)
.delete(对象)
//修改
Person unique = personDao.queryBuilder()
.where(PersonDao.Properties.Id.eq(5))
.build().unique();
unique.setName1("******"");
personDao.update(unique);