最近项目重构,我负责android客户端数据库操作的封装,调研时发现了一款超级好用的ORM数据库框架——greenDao!
看了greenDao官网的说明,发现这个框架比之前用的ORMLite快很多,采用自动生成代码的方式也让人眼前一亮,于是决定试一试。
好了,话不多说,上代码!
一、配置工程
1、在../app/src/main 目录下新建Directory命名为java-gen-db,用于存放greenDao自动生成的代码.
2、为工程添加一个java的module,命名为daogenerator,此工程只有一个类MyDaoGenerator.
3、在app的build.gradle中添加以下代码
sourceSets{
main{
java.srcDirs = ['src/main/java','src/main/java-gen-db']
}
}
compile 'de.greenrobot:greendao:2.1.0'
在daogenerator的build.gradle中添加以下代码
compile 'de.greenrobot:greendao-generator:2.1.0'
配置好gradle后,同步(sync )一下.
同步结束后开始下一步.
二、生成代码
daogenerator的作用是生成geenDao操作数据库的DaoMaster、DaoSession,GreenDao和JavaBean。
引用古沐风的一段文字说明一下这些自动生成的代码什么意思:
(古沐风博客:http://my.oschina.net/cheneywangc/blog/196354)
DaoMaster:一看名字就知道它是Dao中的最大的官了。它保存了sqlitedatebase对象以及操作DAO classes(注意:不是对象)。其提供了一些创建和删除table的静态方法,其内部类OpenHelper和DevOpenHelper实现了SQLiteOpenHelper并创建数据库的框架。
DaoSession:会话层。操作具体的DAO对象(注意:是对象),比如各种getter方法。
XXXDao:实际生成的某某DAO类,通常对应具体的java类,比如NoteDao等。其有更多的权限和方法来操作数据库元素。
XXXEntity:持久的实体对象。通常代表了一个数据库row的标准java properties。
现在我需要一个userInfo的表,我需要在MyDaoGenerator做以下的工作.
/**
* 此java工程用于生成
* greenDao操作数据库需要的
* DaoMaster && DaoSession && xxDao && xxEntity
*/
public class MyDaoGenerator {
public static void main(String[] args) throws Exception{
//参数1:数据库版本
//参数2:自动生成代码默认包
Schema schema = new Schema(2,"org.xxx.db");
addUserInfo(schema);
//获取自动输出代码路径