Android MVPBuilder第三篇[GreenDao]
来源:互联网 发布:ubuntu 丢失windows 编辑:程序博客网 时间:2024/06/17 00:51
- [ MVPBuilder Github 下载地址]
今天我们引入数据库开源框架GreenDao,它是非常优秀的ORM框架。先来看看今天要关注的工程目录结构:
就是箭头所指的那几个文件。其中只有绿色的是我们要写的,其它都是自动生成的!!要知道程序员是世界上最懒而生物,还是那句,不要自己造轮子,还是那句,抽象抽象抽象。所有项目的数据库操作都最后变为增,删,改,查。所以才会有Dao这个概念的提出,再把操作数据库抽象封装起来,让程序员不用懂sql语句。当然,作为基本的素养,sql语句是必须要了解的。
- [ GreenDao 官网]
情景假设
我们的APP要创建一个User表,这个表有OID,Name,Sex这几个字段,然后需要对这个表进行增删改查。简单三步,OK!
- 编写生成器DaoGenerator
- 执行生成器生成文件
- 编写Api接口
- 使用增删改查功能
第一步:
创建一个Java Module,然后新建一个可执行的DaoGenerator类,注释已经非常清楚了,这个生成器是用来生成程序中使用的实体bean或者叫POJO或者叫Entity,反正就是一个类,这个类是对你业务里某些东西的封装,这里就是用户类和用户表的映射。
package com.yihukurama.daogener;import de.greenrobot.daogenerator.Entity;import de.greenrobot.daogenerator.Schema;public class DaoGenerator { public static void main(String[] args) throws Exception { // 正如你所见的,你创建了一个用于添加实体(Entity)的模式(Schema)对象。 // 两个参数分别代表:数据库版本号与自动生成代码的包路径。 // Schema schema = new Schema(1, "me.itangqi.greendao"); // 当然,如果你愿意,你也可以分别指定生成的 Bean 与 DAO 类所在的目录,只要如下所示: Schema schema = new Schema(1, "com.yihukurama.www.mvpbuilder.framework.m.dao.bean"); schema.setDefaultJavaPackageDao("com.yihukurama.www.mvpbuilder.opensource.greendao"); // 模式(Schema)同时也拥有两个默认的 flags,分别用来标示 entity 是否是 activie 以及是否使用 keep sections。 // schema2.enableActiveEntitiesByDefault(); // schema2.enableKeepSectionsByDefault(); // 一旦你拥有了一个 Schema 对象后,你便可以使用它添加实体(Entities)了。 UserTable(schema); // 最后我们将使用 DAOGenerator 类的 generateAll() 方法自动生成代码,此处你需要根据自己的情况更改输出目录(既之前创建的 java-gen)。 // 其实,输出目录的路径可以在 build.gradle 中设置,有兴趣的朋友可以自行搜索,这里就不再详解。 new de.greenrobot.daogenerator.DaoGenerator().generateAll(schema, "/workspace/androidstudio/MVPBuilder/app/src/main/java/"); } private static void UserTable(Schema schema) { // 一个实体(类)就关联到数据库中的一张表,此处表名为「User」(既类名) Entity User = schema.addEntity("User"); // 你也可以重新给表命名 // note.setTableName("User"); // greenDAO 会自动根据实体类的属性值来创建表字段,并赋予默认值 // 接下来你便可以设置表中的字段: User.addIdProperty(); User.addStringProperty("Oid").notNull(); User.addStringProperty("Name"); User.addStringProperty("Sex"); }}
第二步:
执行这个生成器,然后在对应的目录下就会生成代码。对应地生成箭头所指的代码。想一下未来要增加一个好友信息表怎样?那就是再加一个FriendsTable的函数,然后把字段加进去,再执行。总之箭头所指的两个地方的代码都是自动生成的,尽量不要改动。
第三步:
编写自己的接口。虽然greendao已经很好用了,完全可以在代码中使用它的方法,但是作为一个聪明的程序员,还是应该把非业务的代码做一次封装,所有业务情况需要用到greendao的都要通过这个接口调用。这里新建一个DaoApi接口。
/* ShengDao Android Client, DBManager Copyright (c) 2014 ShengDao Tech Company Limited */package com.yihukurama.www.mvpbuilder.opensource.api;import android.content.Context;import com.yihukurama.www.mvpbuilder.opensource.greendao.DaoMaster;import com.yihukurama.www.mvpbuilder.opensource.greendao.DaoSession;/** * [数据库管理类,数据采用GreenDao来实现,所有实现通过模板自动生成;通过获取daoSession来获取所有的dao,从而实现操作对象] * * @author yihukurama * @version 1.0 * @date 2014-11-6 * **/public class DaoApi { private static String DB_NAME = "tempDB"; private static DaoApi instance; private DaoMaster daoMaster; private DaoSession daoSession; public static DaoApi getInstance(Context context) { if (instance == null) { synchronized (DaoApi.class) { if (instance == null) { instance = new DaoApi(context); } } } return instance; } /** * 构造方法 * @param context */ private DaoApi(Context context) { if(daoSession == null){ if(daoMaster == null){ DaoMaster.OpenHelper helper = new DaoMaster.DevOpenHelper(context, DB_NAME, null); daoMaster = new DaoMaster(helper.getWritableDatabase()); } daoSession = daoMaster.newSession(); } } public DaoMaster getDaoMaster() { return daoMaster; } public void setDaoMaster(DaoMaster daoMaster) { this.daoMaster = daoMaster; } public DaoSession getDaoSession() { return daoSession; } public void setDaoSession(DaoSession daoSession) { this.daoSession = daoSession; } public void reset(){ instance = null; daoMaster = null; daoSession = null; }}
第四步:
大功告成,只剩调试[增删改查]。别急,先体会一下greendao带给我们什么,不用写sql语句,不用自己建表等等,让我们专注业务。这其实跟java的hibernate等是异曲同工之妙。第四步增删改查就留到下一节。记住,任何不是自己编写的代码,都要用一个中间的接口来调用,因为如果程序中有1000处调用,如果不用接口,到时候人家升级了,函数名变了,你想升级就要改1000处了,或者说你想换个框架,我不用greendao了,我突然想试试reddao看看性能怎样,也是改接口就行了,不用找1000处去改。下一篇我们继续来调试增删改查功能吧,这些其实官网都有~
- Android MVPBuilder第三篇[GreenDao]
- Android MVPBuilder第四篇[GreenDao的使用]
- Android MVPBuilder第二篇
- Android MVPBuilder第一篇
- [Android第三方类库]greenDAO入门文章
- android 数据库操作 GreenDAO 第三方开源项目
- Android-第三方框架-GreenDao(一)
- Android 开发最佳实践教程——MVPBuilder
- [Android第三方类库]greenDao使用心得(一)
- Android开发数据库之第三方ORM框架(GreenDao)
- Android studio,使用greenDao第三方数据库框架操作数据库
- Android数据库操作第三方库GreenDao的使用
- 第三方开源库:数据库:GreenDao
- android greenDAO
- android greenDAO
- Android ORM-GreenDao学习之一基础篇
- 第三方框架之greenDao
- 第三方ORM框架GreenDao
- linux移植中Makefile和Kconfig
- 关于数论以及部分其他学习内容总和
- 导入Excel方式汇总--第一种
- android 数据安全中常用的加密算法 AES
- 虚函数表
- Android MVPBuilder第三篇[GreenDao]
- IM模块-缓存图片视频简单工具类
- 点赞+1 效果
- AngularJS常用服务($http、$location、$sce等)
- onSenUI 常用UI组件 笔记
- js的原型链
- LINQ分页和排序,skip和Take 用法
- 微服务架构下,如何实现分布式跟踪?
- C# 怎么将byte字节拼接成uint