先贴配置吧:
首先在project下的bulid文件(注意是project下的)里
的buildscript节点下的dependencies节点里
添加classpath'org.greenrobot:greendao-gradle-plugin:3.0.0'
buildscript节点下的repositories节点里
添加mavenCentral()
然后再modle的bulid文件下 添加
applyplugin:'org.greenrobot.greendao'
dependencies:
compile'org.greenrobot:greendao:3.0.1'
//配置生成文件路径
greendao {
targetGenDir 'src/main/java'
}
好了 到此配置完成。
第二步,我一般是写个bean
首先 你要让greendao认识 你需要在class添加@Entity注解
其次id必须要(必须是Long类型 long也不行!!!)
@Id(autoincrement=true) //此处为自增长
private Long id; //实例
完成以上操作 同步即可
第三步:
按照面向对象思想(呵呵哒) 我先来个父类 抽取公用特性 长这样:DBManager
private final static StringdbName="demo_db";
private DaoMaster.DevOpenHelper openHelper;
private Context context;
//构造方法 初始化
//DaoMaster 这个类是重点 下面你会重点看到 因为用的频繁。。。。
public DBManager(Context context) {
this.context= context;
openHelper=new DaoMaster.DevOpenHelper(context,dbName, null);
}
/**
* 获取可读数据库
*/
protected SQLiteDatabase getReadableDatabase() {
if(openHelper==null) {
openHelper=new DaoMaster.DevOpenHelper(context,dbName, null);
}
SQLiteDatabase db =openHelper.getReadableDatabase();
return db;
}
//我想注释应该写的很清楚了(😊😊😊)
/**
* 获取可写数据库
*/
protected SQLiteDatabase getWritableDatabase() {
if(openHelper==null) {
openHelper=newDaoMaster.DevOpenHelper(context,dbName, null);
}
SQLiteDatabase db =openHelper.getWritableDatabase();
return db;
}
//以下辅助类 供子类使用
protectedDaoMastergetReadDaoMaster() {
return newDaoMaster(getReadableDatabase());
}
protected DaoSession getReadDaoSession() {
return getReadDaoMaster().newSession();
}
protected DaoMaster getWriDaoMaster() {
return newDaoMaster(getWritableDatabase());
}
protected DaoSession getWriDaoSession() {
return getWriDaoMaster().newSession();
}
接下来 按照我的套路 我应该要写子类了 自此 完成整个操作
//用户数据 dao子类 自行感受
public class UserDao extends DBManager {
public UserDao(Context context) {
super(context);
}
//添加方法
public long add(DbUser user) {
return getWriDaoSession().insert(user);
}
//删除所有
public void delete() {
getWriDaoSession().delete(getWriDaoSession().getDbUserDao());
}
//根据某个实体删除
public void delete(DbUser user) {
getWriDaoSession().delete(user);
}
//根据某个实体修改
public void update(DbUser user) {
getWriDaoSession().update(user);
}
//查询所有数据
public List<DbUser> findAll() {
return getReadDaoSession().getDbUserDao().queryBuilder().list();
}
/**
* 根据用户userId 查找
*@paramuserId
*@return
*/
public List<DbUser> findUserByUserId(String userId) {
return getReadDaoSession().getDbUserDao().queryBuilder().
where(DbUserDao.Properties.UserId.gt(userId)).
orderAsc(DbUserDao.Properties.UserId).list();
}
}
//部分注解
schemaVersion: 数据库schema版本,也可以理解为数据库版本号
daoPackage:设置DaoMaster 、DaoSession、Dao包名
targetGenDir:设置DaoMaster 、DaoSession、Dao目录
targetGenDirTest:设置生成单元测试目录
generateTests:设置自动生成单元测试用例
实体@Entity注解
schema:告知GreenDao当前实体属于哪个schema
active:标记一个实体处于活动状态,活动实体有更新、删除和刷新方法
nameInDb:在数据中使用的别名,默认使用的是实体的类名
indexes:定义索引,可以跨越多个列
createInDb:标记创建数据库表
基础属性注解
@Id :主键 long/Long型,可以通过@Id(autoincrement = true)设置自增长
@Property:设置一个非默认关系映射所对应的列名,默认是的使用字段名 举例:@Property (nameInDb="name")
@NotNul:设置数据库表当前列不能为空
@Transient:添加次标记之后不会生成数据库表的列
索引注解
@Index:使用@Index作为一个属性来创建一个索引,通过name设置索引别名,也可以通过unique给索引添加约束
@Unique:向数据库列添加了一个唯一的约束
关系注解
@ToOne:定义与另一个实体(一个实体对象)的关系
@ToMany:定义与多个实体对象的关系
参考http://www.cnblogs.com/whoislcj/p/5651396.html
增删改 都是最简单的 基本一行代码就行,难得是查询。
以上,greendao3.0的基本套路 全部完成,各位伸手党随意复制。