greenDao3.x的使用
GreenDao 3.0采用注解的方式来定义实体类,通过gradle插件生成相应的代码
* 1.配置greenDao
* 在工程的build.gradle文件添加下面代码
buildscript {
repositories {
jcenter()
mavenCentral() // add repository需要添加这一行
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin需要添加这个插件
}
}
* 在app的build.gradle下面添加
apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao' // apply plugin允许使用插件
dependencies {
compile 'org.greenrobot:greendao:3.2.2' // add library 添加greenDao的依赖
}
* 在app的gradle下面添加--进行数据库信息的配置
greendao {
schemaVersion 1
daoPackage 'com.anye.greendao.gen'//换成自己的包名
targetGenDir 'src/main/java'
}
* schemaVersion--> 指定数据库schema版本号,也可以理解成数据库版本号,迁移等操作会用到;
* daoPackage --> dao的包名,包名默认是entity(实体)所在的包;(可以自定义输出目录,如果不定义,默认是entity的包)
* targetGenDir --> 生成数据库文件的目录;/设置DaoMaster 、DaoSession、Dao目录,这个是greendao默认生成的三个重要的类
GreenDao 3.0采用注解的方式来定义实体类,通过gradle插件生成相应的代码
* 1.配置greenDao
* 在工程的build.gradle文件添加下面代码
buildscript {
repositories {
jcenter()
mavenCentral() // add repository需要添加这一行
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.3'
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // add plugin需要添加这个插件
}
}
* 在app的build.gradle下面添加
apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao' // apply plugin允许使用插件
dependencies {
compile 'org.greenrobot:greendao:3.2.2' // add library 添加greenDao的依赖
}
* 在app的gradle下面添加--进行数据库信息的配置
greendao {
schemaVersion 1
daoPackage 'com.anye.greendao.gen'//换成自己的包名
targetGenDir 'src/main/java'
}
* schemaVersion--> 指定数据库schema版本号,也可以理解成数据库版本号,迁移等操作会用到;
* daoPackage --> dao的包名,包名默认是entity(实体)所在的包;(可以自定义输出目录,如果不定义,默认是entity的包)
* targetGenDir --> 生成数据库文件的目录;/设置DaoMaster 、DaoSession、Dao目录,这个是greendao默认生成的三个重要的类
* 2.创建实体类,并且加上实体类注解和id注解,需要注意的是此处id必须为Long类型
@Entity
public class User {
@Id
private Long id;
private String name;
@Transient
private int tempUsageCount; // not persisted
}
* 通过makeProject编译将会自动生成三个重要的文件,DaoMaster,DaoSession和UserDao(XXXDao)
* 其中XxxDao便是主要操作数据库的增删改查
@Entity
public class User {
@Id
private Long id;
private String name;
@Transient
private int tempUsageCount; // not persisted
}
* 通过makeProject编译将会自动生成三个重要的文件,DaoMaster,DaoSession和UserDao(XXXDao)
* 其中XxxDao便是主要操作数据库的增删改查
* 3.application下进行greenDao的设置
public class MyApplication extends Application {
private DaoMaster.DevOpenHelper mHelper;
private SQLiteDatabase db;
private DaoMaster mDaoMaster;
private DaoSession mDaoSession;
public static MyApplication instances;
@Override public void onCreate() {
super.onCreate();
instances = this;
setDatabase();
}
public static MyApplication getInstances(){
return instances;
}
/**
* 设置greenDao
*/
private void setDatabase() {
// 通过 DaoMaster 的内部类 DevOpenHelper,你可以得到一个便利的 SQLiteOpenHelper 对象。
// 可能你已经注意到了,你并不需要去编写「CREATE TABLE」这样的 SQL 语句,因为 greenDAO 已经帮你做了。
// 注意:默认的 DaoMaster.DevOpenHelper 会在数据库升级时,删除所有的表,意味着这将导致数据的丢失。
// 所以,在正式的项目中,你还应该做一层封装,来实现数据库的安全升级。
mHelper = new DaoMaster.DevOpenHelper(this, "notes-db", null);//string便是数据库的名字
db = mHelper.getWritableDatabase();
// 注意:该数据库连接属于 DaoMaster,所以多个 Session 指的是相同的数据库连接。
mDaoMaster = new DaoMaster(db);
mDaoSession = mDaoMaster.newSession();
}
public DaoSession getDaoSession() {
return mDaoSession;
}
public SQLiteDatabase getDb() {
return db;
}
}
* 4.获取到UserDao进行增删改查
mUserDao = MyApplication.getInstances().getDaoSession().getUserDao();
public class MyApplication extends Application {
private DaoMaster.DevOpenHelper mHelper;
private SQLiteDatabase db;
private DaoMaster mDaoMaster;
private DaoSession mDaoSession;
public static MyApplication instances;
@Override public void onCreate() {
super.onCreate();
instances = this;
setDatabase();
}
public static MyApplication getInstances(){
return instances;
}
/**
* 设置greenDao
*/
private void setDatabase() {
// 通过 DaoMaster 的内部类 DevOpenHelper,你可以得到一个便利的 SQLiteOpenHelper 对象。
// 可能你已经注意到了,你并不需要去编写「CREATE TABLE」这样的 SQL 语句,因为 greenDAO 已经帮你做了。
// 注意:默认的 DaoMaster.DevOpenHelper 会在数据库升级时,删除所有的表,意味着这将导致数据的丢失。
// 所以,在正式的项目中,你还应该做一层封装,来实现数据库的安全升级。
mHelper = new DaoMaster.DevOpenHelper(this, "notes-db", null);//string便是数据库的名字
db = mHelper.getWritableDatabase();
// 注意:该数据库连接属于 DaoMaster,所以多个 Session 指的是相同的数据库连接。
mDaoMaster = new DaoMaster(db);
mDaoSession = mDaoMaster.newSession();
}
public DaoSession getDaoSession() {
return mDaoSession;
}
public SQLiteDatabase getDb() {
return db;
}
}
* 4.获取到UserDao进行增删改查
mUserDao = MyApplication.getInstances().getDaoSession().getUserDao();
* 增 insert(T entity)
* 删 delete(T entity) deleteAll() deleteByKey(K key)根据主键删除
* 改 update(T entity)
* 查 load(K key)通过主键查询一条 loadAll()查询所有 queryRaw(java.lang.String where, java.lang.String... selectionArg)查询 返回集合
* 删 delete(T entity) deleteAll() deleteByKey(K key)根据主键删除
* 改 update(T entity)
* 查 load(K key)通过主键查询一条 loadAll()查询所有 queryRaw(java.lang.String where, java.lang.String... selectionArg)查询 返回集合
* 增删改查的更多操作 查看greenDao的api
http://greenrobot.org/files/greendao/javadoc/3.1/
http://greenrobot.org/files/greendao/javadoc/3.1/