请选择 进入手机版 | 继续访问电脑版
JAVEN

GreenDao框架使用(一)基本配置篇

所在版块: 课堂笔记 2016-05-03 21:46   [复制链接] 查看: 1814|回复: 3
本帖最后由 yangjw 于 2016-5-4 11:39 编辑

  • 前言
GreenDao是一款ORM(object/relational mapping 对象关系映射)框架。是目前最快的ORM框架之一。(本案例中使用的开发工具是android studio)。GreenDao的官网:http://greenrobot.org/greendao/
GreenDao的下载地址:https://github.com/greenrobot/greenDAO

  • 什么是ORM?
ORM是对象关系映射,那什么是对象(Object),什么是关系(Relational)?对象就是Java对象(不多解释,如果什么是java对象都不知道,就先去学习Java基础),关系就是数据库中的二维表,在数据库中的二维表也叫做关系。对象关系映射,就是java对象和数据库中的表进行一一对应,使用一个java对象去表示一个数据库的表。所以GreenDao就是一个将SQLite数据库和Java Object对象进行关联的框架,如图:

greenDAO-orm-640.png

  • 使用介绍
GreenDao的使用需要创建2个项目,一个是Java Project,一个是Android Project。其中Java Project用于生成访问数据库的DAO文件。然后将这些DAO文件拷贝到android Project中就可以访问数据库了;然后在Android Project中编写项目的代码。
  • 创建一个Android Project,项目名称为GreenDaoDemo。(此处项目名称要留意,因为下面再Java项目中会用到)。
  • 创建一个Java project项目(在android studio中创建的是一个java library项目),Java项目名称为GreenDaoGenerator。
  • 2和工程的作用如下图:
greenDAO-Projects-640.png

1.导入需要的包
  1. compile 'org.greenrobot:greendao-generator:2.2.0'
复制代码
2.创建一个Java类。在Main方法中加入如下代码:
  1. public static void main(String[] args) {
  2.         /**
  3.          * NO.1
  4.          * Schema是GreenDAO框架中所有实体类的一个"容器"类,用于添加所有的实体类.
  5.          * 参数一:版本号
  6.          * 参数二:包名,主要用于存放自动生成的DAO文件
  7.          */
  8.         Schema schema = new Schema(1,"com.yangjw.greendao.dao");
  9.         //添加一个Entity对象。addEntity的参数将作为为Java类名和数据库的表名(关系名)
  10.         Entity customer = schema.addEntity("Customer");
  11.         //添加ID,自动增长,主键
  12.         Property id = customer.addIdProperty().getProperty();
  13.         //添加属性customerName,字符串类型,不能为空
  14.         customer.addStringProperty("customerName").notNull();
  15.         //添加属性customerPhone,字符串类型
  16.         customer.addStringProperty("customerPhone");
  17.         //添加属性customerAge,int类型
  18.         customer.addIntProperty("customerAge");
  19.         try {
  20.             /**
  21.              * NO.2
  22.              * 自动生成所有的DAO对象
  23.              * 参数一:Schema对象
  24.              * 参数二:指定目标项目地址,用于存放生成的DAO文件。
  25.              * 其中NO.1中的参数二和NO.2中的参数二合起来就是:
  26.              * 放到项目地址为GreenDaoDemo/app/src/main/java的包名为com.yangjw.greendao.dao的包下。
  27.              */
  28.             new DaoGenerator().generateAll(schema,"../GreenDaoDemo/app/src/main/java");
  29.         } catch (Exception e) {
  30.             e.printStackTrace();
  31.         }
  32.     }
复制代码
1、"../GreenDaoDemo/app/src/main/java"地址中的GreenDaoDemo是android project的名称。
2、Schema schema = new Schema(1,"com.yangjw.greendao.dao");中的com.yangjw.greendao.dao包明用于存放自动生成的DAO文件,如果没有将会自动创建。

  • 配置成功
1、配置成功的表象就是会在Android Project项目GreenDaoDemo中将会生成如下Java类文件:(此处如果直接打开这些Java文件,可能会报错,因为还缺少Jar包,请往下看“简单实用”中的Jar包导入方式)
Customer.java
CustomerDao.java
DaoMaster.java
DaoSession.java
2、当以上文件自动生成之后,就可以开始使用GreenDao框架了。

  • 简单实用
刚开始的时候,我们创建了2个Project,一个Java Project,一个android Project,大家应该还记得。我们使用JavaProject完成了自动生成DAO文件的操作,而且这些DAO文件自动生成到了Android project中。现在我们直接在Android project中完成基本的使用。
使用步骤:
1、导包(注意:此处的包文件和上面Java Project中的包文件名称是不一样的)
  1. compile 'org.greenrobot:greendao:2.2.0'
复制代码
2、新建一个Activity,在onCreate方法中添加如下代码:
  1. //创建一个开发环境的Helper类,如果是正式环境调用DaoMaster.OpenHelper
  2.         DaoMaster.DevOpenHelper mHelper = new DaoMaster.DevOpenHelper(this,"androidxx",null);
  3.         //通过Handler类获得数据库对象
  4.         SQLiteDatabase readableDatabase = mHelper.getReadableDatabase();
  5.         //通过数据库对象生成DaoMaster对象
  6.         DaoMaster daoMaster = new DaoMaster(readableDatabase);
  7.         //获取DaoSession对象
  8.         DaoSession daoSession = daoMaster.newSession();
  9.         //通过DaoSeesion对象获得CustomerDao对象
  10.         CustomerDao customerDao = daoSession.getCustomerDao();
复制代码
说明,以上代码最终可以获得CustomerDao对象,通过CustomerDao对象可以进行对表“CUSTOMER”的增删查改操作。这里面的CustomerDao就是我们通过Java project自动创建的。
比如查询所有数据:
  1. List<Customer> customerList = customerDao.loadAll();
复制代码
注意:在Android项目中使用的DaoMaster、DaoSession、CustomerDao等文件,必须是Java Project自动生成的。不要从其他项目中拷贝过来使用,否则会报错。

关于GreenDao的详细使用将在下一篇【GreenDao框架使用(二)基本使用篇】中详细介绍。



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

我的博客

QQ|Archiver|手机版|小黑屋|课堂笔记  

GMT+8, 2018-12-12 10:47 , Processed in 0.093560 second(s), 33 queries .

快速回复 返回列表