Android开发中,你还在用SqliteOpenHelper进行数据库操作吗?你还在用Sqlite语句来执行每一个数据库操作吗? Oh, no!这绝对是一件体力劳动~
当你觉得一直这样做很累的话,来体验下当下流行的ORM框架把!
随着Android的飞速发展,出现了很多关于数据库操作的ORM框架,ormndroid、 ormlite、greendao等。ORM(Object Relation Mapping) ,对象关系映射,这是一种用于实现不同类型数据的转换的设计。然而这么多的ORM框架,经过各方面的对比,GreenDao就脱颖而出了。GreenDao无论从执行效率,还是API的轻便程度上来讲,都几乎是目前最好的框架了。本篇文章主要说说GreenDao的生成,这也是比较复杂的部分,刚开始看上去,可能会走很多弯路;生成可以了之后,调用就是手到擒来的事了~
1、新建一个项目,这个项目作为我们GreenDao框架调用的工程项目,也就是我们开发用的Project. 在
Android Studio中称之为Module.
1) 如果当前已经存在Project,那么在Project之下新建一个Module即可. file - new - new Module...
2) 如果当前没有Project存在,那么需要先新建一个Project(相当于eclipse中的workspace)
3) 如果你想把自动生成的代码放到自定义的包里,那么先建好包把!比如我在Module中新建greenDao包用于
存放greenDao相关的代码,在greenDao下新建dao与bean两个分包,存放生成的dao与bean
2、 新建一个Java工程,这个Java Project用于生成我们需要的代码
1) 在上面的Project下,新建一个Java工程。file - new - new Module 这里选择Java Library
2) 新建的Java工程可能不能运行,需要配置一下,Run - Edit configrations - 点击左上角的‘’+‘’ -
选择Application,填上Name 和 MainClass选项基本就可以了,如果不可以下面会有提示。(很多新建的 Module可能上面都打个x号,根据这条配置即可解决)
3、 在Java Project中,首先要在gradle.build中添加引用jar包
compile 'org.greenrobot:greendao-generator:3.2.0'
导入jar包之后,要使之生效,必须先clean一下或者rebuild一下,这样jar才会编译进程序中,然后可以在入 口类中添加自动生成的代码了!~ 先看整体图
1) 首先需要一个Schema对象,可以称之为模型,通过Schema来创建表等等~
//模式实例,指定<数据库版本>与<Bean实体生成目录>
Schema schema = new Schema(DATABASE_VERSION, DATABASE_BEAN_PACKAGE);
该构造需要两个参数,从命名可以看出,参数1: 数据库版本 参数2: 生成的代码放在哪个包; 从上图可以看 出,这个包不是Java工程的包,而是需要生成的Module中,将生成的bean放在哪个包,这里是bean包。
// 指定Dao类生成目录
schema.setDefaultJavaPackageDao(DATABASE_DAO_PACKAGE);
通过以上方法来设置生成的Dao需要放在哪个包下,也不是Java工程下的包,而是调用的Module中。
接下来需要用Schema对象来创建表了,上图中创建了一个示例表User
private static void addNote_User(Schema schema) {
Entity entity = schema.addEntity()entity.addIdProperty().notNull().primaryKey().autoincrement()entity.addStringProperty()entity.addStringProperty()}
Schema通过getEntity得到一个表; 自动生成时,每一个表与一个实体类对应;参数与其说表名,也可以说是 实体类名ClassName of bean, 因为这里表名是可以另外设置的,通过setTableName方法,不过最好保持 TableName 与 BeanClassName一致即可。通过addPropoerty可以添加对应的列,一些Api还是比较方便的,如
notNull()/primaryKey()/autoIncrement()等,对应Sqlite的语法。
上面的建表过程已经到这里了,下面添加这句来执行生成代码
try {
DaoGenerator().generateAll(schema)} (Exception e) { e.printStackTrace()}
generateAll方法的参数2: 生成代码放在哪? 绝对路径,我这里是
private static final String GENERATOR_TARGET = "D:/workspace/Demos/greendao/src/main/java";
这里注意,到main/Java就可以了,因为在哪个Package下,我们已经指定了~
最后执行下这段代码,会看到Message中打印出来,已经生成了几个类,DaoMaster,DaoSecction等;然后去我 们的Module中看看,对应包下是不是生成你想要的代码了呢 ?
通过以上的步骤,我们可以通过Java Library生成对应的Bean类以及Dao类,还有DaoMaster,DaoSection等。
下面来说下GreenDao如何来初始化 ?
首先要说明一点,GreenDao的初始化,建议放在Application中,防止反复的创建 ~
1) 首先需要新建一个DevOpenHelper对象,这个对象是DaoMaster的一个内部类;在DaoMaster中执行了 GreenDao的主要操作,是GreenDao的一个核心类;DevOpenHelper这个对象需要传入数据库的名字。
2) 过程如上图所示,最后得到的是DaoSeccion,这是一个业务层的类,通过DaoSeccion可以getXXDao,也就是 你想创建XX表的操作类;通过这个XXDao,你就可以执行数据库的所有的操作了,是不是很简单呢 ?
3) 这段初始化最好在Application中执行,获取的时候可以通过getInstance得到Applicaton的对象然后取出这个
GreenDaoInitiallizer的对象来获取DaoSeccion;在执行数据库操作的时候getXXDao就好了~
以上就是GreenDao整个创建过程,以及创建中遇到问题的解决办法; 通过它,你可以轻松的使用GreenDao来创建你需要的Table,Bean等,是不是很简单呢 ? 如果文章对你有帮助,请赞之,谢谢!!
下篇文章,给大家详细说下如何使用GreenDao来执行数据库的基本操作以及GreenDao自带的一些比较方便的操作API,敬请期待。
共同学习,写下你的评论
评论加载中...
作者其他优质文章