依赖
//根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:用于标识当前实体需要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作为标记。
private DaoSession daoSession;
private PersonDao personDao;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
daoSession = DaoManager.getDefault(this).daoSession();
personDao = daoSession.getPersonDao();
//添加
for (int i = 0; i < 10; i++) {
personDao.insert(new Person(null, "wang" + i, i));
}
}
public void onClick(View view) {
//查询
List<Person> list = personDao.queryBuilder().build()
.list();
fore(list);
//修改
Person unique = personDao.queryBuilder()
.where(PersonDao.Properties.Id.eq(2))
.build().unique();
unique.setName("tao");
personDao.update(unique);
//条件查询
List<Person> list1 = personDao.queryBuilder()
.where(PersonDao.Properties.Age.gt(10),PersonDao.Properties.Id.lt(18))
.build()
.list();
fore(list1);
//删除
personDao.deleteByKey(unique.getId());
}
public void fore(List<Person> list) {
for (Person person : list) {
Log.e("tag",person.toString());
}
}
DaoManager
package com.example.zsd.myapplications0314.utils;
import android.content.Context;
import com.example.zsd.myapplications0314.greendao.DaoMaster;
import com.example.zsd.myapplications0314.greendao.DaoSession;
public class DaoManager {
private final DaoSession daoSession;
private static DaoManager daoManager;
private DaoManager (Context context){
daoSession = DaoMaster.newDevSession(context, "my.db");
}
public static DaoManager getIntance(Context context){
if (daoManager == null) {
synchronized (DaoManager.class){
daoManager = new DaoManager(context);
}
}else {
return daoManager;
}
return daoManager;
}
public DaoSession getDaoSession() {
return daoSession;
}
}