最近在搜寻好的数据库操作框架,发现GreenDao确实不错,结合项目使用过程,记录下配置细节,以供随时查看
GreenDao 数据库配置
greenDao不做太多介绍,一个很厉害的数据库框架,每秒钟读写高达30000次,下面主要记录简单的配置过程。
1.首先,在project的build.gradle内加入插件依赖
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1'
2.在module的build.gradle内加入
//...
apply plugin: 'org.greenrobot.greendao'
android{
//...
greendao {
schemaVersion 1//数据库版本号
daoPackage 'com.lee.greendaodemo.dao'//设置DaoMaster、DaoSession、Dao包名
targetGenDir 'src/main/java'//设置DaoMaster、DaoSession、Dao目录
//targetGenDirTest:设置生成单元测试目录
//generateTests:设置自动生成单元测试用例
}
}
dependencies {
//...
compile 'org.greenrobot:greendao:3.2.0'
}
3.等待gradle更新成功后,建立相应的实体类
@Entity(nameInDb = "tb_student")//标记为Entity 自动创建数据库表,若不指明nameInDb,表名默认为类名
public class Student {
@Id(autoincrement = true)//注解标记为ID后就会成为主键 设置自增长为true
private Long id;
@Property(nameInDb = "sName")//注解标记为Property,会在数据库生成表的相应字段,nameInDb为数据库内的字段名,不写默认当前变量名
private String name;
@Property(nameInDb = "sAge")
private Integer age;
private Boolean boy;//未加注解默认会生成表的字段,字段名为变量名
@Transient //注解标记为Transient 不会产生数据库字段
private String phoneNum;
}
4.类建好后,build项目,greenDao会自动创建对应的Dao类、Session类和Master类,生成路径为gradle内daoPackage的路径
5.初始化greendao
public class MyApplication extends Application {
private static MyApplication application;
private DaoMaster.DevOpenHelper mHelper;
private SQLiteDatabase db;
private DaoMaster mDaoMaster;
private DaoSession mDaoSession;
@Override
public void onCreate() {
super.onCreate();
application = this;
setDatabase();//启动时机可以任意选择,在application初始化方便调用,安全
}
public static MyApplication getApplication() {
return application;
}
/**
* 设置greenDao
*/
private void setDatabase() {
// 通过DaoMaster 的内部类 DevOpenHelper,你可以得到一个便利的SQLiteOpenHelper 对象。
// 可能你已经注意到了,你并不需要去编写「CREATE TABLE」这样的 SQL 语句,因为greenDAO 已经帮你做了。
// 注意:默认的DaoMaster.DevOpenHelper 会在数据库升级时,删除所有的表,意味着这将导致数据的丢失。
// 所以,在正式的项目中,你还应该做一层封装,来实现数据库的安全升级。
mHelper = new DaoMaster.DevOpenHelper(this, "notes-db", null);
db = mHelper.getWritableDatabase();
// 注意:该数据库连接属于DaoMaster,所以多个 Session 指的是相同的数据库连接。
mDaoMaster = new DaoMaster(db);
mDaoSession = mDaoMaster.newSession();
}
public DaoSession getDaoSession() {
return mDaoSession;
}
public SQLiteDatabase getDb() {
return db;
}
}
6.最后,不要忘记注册application