主要步骤:
添加依赖编写Bean初始化化内核增删改查 操作API1.build.gradle(Project:)中添加以下代码:
buildscript { repositories { jcenter() mavenCentral() <-- add repository } dependencies { classpath 'com.android.tools.build:gradle:2.3.0' classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1' <-- add plugin } }2.build.gradle(Module:)中添加以下代码:
apply plugin: 'com.android.application' apply plugin: 'org.greenrobot.greendao' <-- apply plugin dependencies { compile 'org.greenrobot:greendao:3.2.0' <-- add library }以下是创建bean的简单示例:
@Entity public class User { @Id(autoincrement = true) private Long id; @Property(nameInDb = "USERNAME") private String name; @NotNull private int repos; @Transient private int tempUsageCount; ... }greenDao3采用的是编译时注解,当你创建好数据模型后,编译然后greenDao3会帮你生成一些类: 注解解释
@Entity –> 你bean类必须标识有@Entity才会被greenDao识别。在@Entity内还可添加其他内容如下: @Entity( // If you have more than one schema, you can tell greenDAO // to which schema an entity belongs (pick any string as a name). schema = "myschema", // Flag to make an entity "active": Active entities have update, // delete, and refresh methods. active = true, // 指定表名,默认表名为类名 nameInDb = "AWESOME_USERS", // 定义跨多列的索引. indexes = { @Index(value = "name DESC", unique = true) }, // 是否要生成表,默认时true createInDb = false, // 是否生成包含所有的属性构造函数 //要求有一个无参的构造函数 generateConstructors = true, // 属性的get/setf方法是否应该被生成,在缺失的情况下 generateGettersSetters = true )字段注解
@Id 主键表示 类型应为long 主键自增 且不重用旧的值 @Id(autoincrement = true)
@Property 定义数据库中列名称的,不写的话 按原字段名生成大写的名称如userName 对应生成USER_NAME @Property(nameInDb = "USERNAME")
@NotNull 值不可以为空 用于long, int, short, byte 这几个基本数据类型。
@Transient 临时状态标记。
以下代码最好在你以实现的Application中进行,
DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "db_name", null); SQLiteDatabase db = helper.getWritableDatabase(); DaoMaster daoMaster = new DaoMaster(db); DaoSession daoSession = daoMaster.newSession();以上代码主要是用于创建数据库,并且得到DaoSession 对象,我们在进行操作时可以用DaoSession 对象拿到对应数据的Dao对象,
TestBeanDao testBeanDao = daoSession.getTestBeanDao(); TestBean2Dao testBean2Dao = daoSession.getTestBean2Dao();注意:DaoMaster,DaoSession ,TestBeanDao ,TestBean2Dao 这些类都是编译后自动生成的。
1.queryRaw ;
String where = "where name = ?"; String selectionArg = "lining"; List<TestBean> testBeen = testBeanDao.queryRaw(where, selectionArg);2.QueryBuilder;
// 获取build对象 QueryBuilder<TestBean> queryBuilder = testBeanDao.queryBuilder(); queryBuilder.where(WhereCondition ); // 查询条件 WhereCondition joe = TestBeanDao.Properties.Name.eq("Joe");Properties.Field.
方法名意义eq等于nutEq不等于gt大于lt小于ge大于等于le小于等于in在给定的集合中nutIn不在给定的集合中isNull值为空isNotNull值不为空between在两个值得范围内like