Chinaunix首页 | 论坛 | 博客
  • 博客访问: 397314
  • 博文数量: 78
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 940
  • 用 户 组: 普通用户
  • 注册时间: 2013-08-25 09:39
文章分类

全部博文(78)

文章存档

2016年(7)

2015年(1)

2014年(35)

2013年(35)

我的朋友

分类: Android平台

2016-06-14 20:46:08

greenDAO 是一个将对象映射到 SQLite 数据库中的轻量且快速的 ORM框架。通过使用一个简单的面向对象API,开发者可以对Java对象进行存储、更新、删除和查询。

为了在 Android 工程中使用 greenDAO ,需要另外创建一个Java Project模块,用于自动生成 Android 工程中需要使用到的 BeanDAODaoMasterDaoSession 等类。

一.在 ANDROID 工程中配置GREENDAO GENERATOR模块

1. .src/main 目录下新建一个与 java 同层级的「java-gen」目录,用于存放由 greenDAO 生成的 BeanDAODaoMasterDaoSession 等类。 

2.配置 Android 工程(app)的 build.gradle,如图分别添加 sourceSets dependencies 
sourceSets {

    main {
            
java.srcDirs = ['src/main/java', 'src/main/java-gen']

         }
    }

compile 'de.greenrobot:greendao:1.3.7'

. 新建GREENDAO GENERATOR模块 ( JAVA 工程)

1. 新建java工程模块

2. 配置 daoexamplegenerator 工程的 build.gradle,添加 dependencies

  compile 'de.greenrobot:greendao-generator:1.3.1'

3.编写 ExampleDaoGenerator 类,决定了GreenDao Generator的输出,可以在这个类中通过对象、关系等创建数据库结构。

 

public class ExampleDaoGenerator {

    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, "me.itangqi.bean");

// schema.setDefaultJavaPackageDao("me.itangqi.dao");

 

        // 模式(Schema)同时也拥有两个默认的 flags,分别用来标示 entity 是否是 activie 以及是否使用 keep sections

        // schema2.enableActiveEntitiesByDefault();

        // schema2.enableKeepSectionsByDefault();

 

        //  使用schema 对象添加实体(Entities

        addNote(schema);

 

        // 使用 DAOGenerator 类的 generateAll() 方法自动生成代码,可以需要根据自己的情况更改输出目录(既之前创建的 java-gen)

// 其实,输出目录的路径也可以在 build.gradle 中设置new DaoGenerator().generateAll(schema, "/Users/tangqi/android-dev/AndroidStudioProjects/MyGreenDAO/app/src/main/java-gen");

    }

 

    private static void addNote(Schema schema) {

        // 一个实体(类)就关联到数据库中的一张表,此处表名为Note(即类名)

        Entity note = schema.addEntity("Note");

        // 也可以重新给表命名

        // note.setTableName("NODE");

 

        // greenDAO 会自动根据实体类的属性值来创建表字段,并赋予默认值

        // 可以设置表中的字段:

        note.addIdProperty();

        note.addStringProperty("text").notNull();

        // 与在 Java 中使用驼峰命名法不同,默认数据库中的命名是使用大写和下划线来分割单词的。

                   // 例如属性“creationDate” 对应数据库中列 “CREATION_DATE”

                  // 设置实体类名为 age,数据库列名为 _age

//entity.addStringProperty("comment ").columnName("my_comment ");

        note.addStringProperty("comment");

        note.addDateProperty("date");

    }

}

 

三.生成 DAO 文件(数据库)

执行 generator 工程,在android主工程java-gen下会发现生成了DaoMasterDaoSessionNoteDaoNote4个类文件。 

四.在 ANDROID 工程中进行数据库操作

Android项目中使用这些生成的类来完成对数据库的操作。

首先就是实例化一个DevOpenHelper对象,通过这个对象获取一个SQLiteDatabase实例。

DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "notes-db", null);

db = helper.getWritableDatabase();

然后再实例化一个DaoMaster对象,再通过daoMaster获取一个DaoSession实例,接着就可以通过这个DaoSession实例获取一个NoteDao实例。

daoMaster = new DaoMaster(db);
daoSession = daoMaster.newSession();
noteDao = daoSession.getNoteDao();

通过Dao对象操作数据库,如

Note note = new Note(null, noteText, comment, new Date());
noteDao.insert(note);
noteDao.deleteByKey(id);

 


阅读(1438) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~