GreenDao 使用

作者: 码脑 | 来源:发表于2016-07-08 14:41 被阅读1113次

    目录结构:

    1. 关于GreenDao

    2. 集成步骤

    2.1 下载配置 [GREENDAO GENERATOR]

    2.2 定义表的结构

    2.3 生成工程

    1. 如何使用

    3.1 配置gradle

    3.2 Coding

    1. Demo

    2. 最后


    正文:

    1. 关于GreenDao

    DAO CODE GENERATION PROJECT

    更详细描述信息可以到[官网]查看

    2. 集成步骤

    2.1 下载配置 [GREENDAO GENERATOR]

    首先,打开一个需要集成的工程。为了演示需要,我在这里创建了一个新的工程:

    Application name可以随意起

    好了,一个干净的工程创建完成。我们来看看,greenDao更新到哪个版本了:
    这个是官方的Git Repo【传送门】,这里有demo和generator等工程。
    回到刚才创建的那个新工程,这里面先创建一个目录,用来存放GreenDao生成的文件:

    切换成Projects模式,才能看到这个红色框起来的选项。

    完成之后,我们接下来的操作。
    以模块方式引用Generator

    创建一个新的模块

    空的java library

    这里工程名,我写的是GreenDaoLib。

    创建完成了。再配置工程里的 build.gradle,添加 dependencies.
    因为generator最新的版本是2.2.0(刚才的官方Git Repo地址打开可以看到)

    我们将
    compile 'org.greenrobot:greendao-generator:2.2.0'
    添加到刚才java library那个工程的build.gradle中:

    compile 'org.greenrobot:greendao-generator:2.2.0'
    

    到这里,我们的配置工作已经完成一半了,现在需要去定义一下数据库的基本信息,
    而这个信息,需要根据项目使用的数据项有关。实际上,generator是将对象翻译成一个一套接口的这么个工具,那么我们现在需要去编写相应的java 对象。

    2.2 定义表的结构

    这里分三步:

    • 首先:
      我们需要创建一个Schema,
    • 然后:
    package com.example;
    import de.greenrobot.daogenerator.DaoGenerator;
    import de.greenrobot.daogenerator.Entity;
    import de.greenrobot.daogenerator.Schema;
    public class DemoGenerator {    
    public static void main(String[] args) throws Exception {        
    //step 1:        
        Schema schema = new Schema(100, "charles.nocompany.greendao");        
    //step 2:        
        addTest(schema);        
    //step 3:        
        new DaoGenerator().generateAll(schema,"./app/src/main/java-gen");    
    }    
    
    private static void addTest(Schema schema) {        
          Entity testTable = schema.addEntity("TestTable");        
          testTable.addIdProperty().primaryKey().autoincrement();
          testTable.addStringProperty("text").notNull();        
          testTable.addStringProperty("comment");        
          testTable.addDateProperty("date");    
    }}
    
    • 最后:
      设置一下输出的路径(刚才我们在java的同级目录下创建了一个java-gen的目录,
      那么这里的generateAll的第二参数就设置到那里去"./app/src/main/java-gen")

    2.3 生成工程

    可以看到,我们将OutPut 设置到之前那个Java-gen的目录下:
    newDaoGenerator().generateAll(schema,"./app/src/main/java-gen");
    最后会在我们设置的output目录下生成:
    DaoMaster、DaoSession、TestTableDao、TestTable
    4个文件


    这几个类,就是我们将在工程中使用的东西。
    问:如果一个项目中有个表,怎么办?
    答:再创建一个addXXX的函数如addTest那样,定义属性,重新生成一次。

    3.如何使用

    3.1配置gradle

    首先,回到我们之前创建的那个Demo工程
    设置一下build.gradle文件
    需要修改sourceset 和dependencies

    apply plugin: 'com.android.application'android {    
    
    compileSdkVersion 24    
    buildToolsVersion "23.0.3"    
    
       defaultConfig {        
        applicationId "com.nocompany.touc.demogreendao"        
        minSdkVersion 22        
        targetSdkVersion 24       
         versionCode 1        
        versionName "1.0"    
    }    
    
      buildTypes {        
        release {            
        minifyEnabled false            
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'       
       }    
    }    
    
    sourceSets {        
       main {            
        java.srcDirs = ['src/main/java', 'src/main/java-gen']        
      }    
    }
    }
    
    dependencies {    
      compile fileTree(dir: 'libs', include: ['*.jar'])    
      testCompile 'junit:junit:4.12'    
      compile 'com.android.support:appcompat-v7:24.0.0'    
      compile 'org.greenrobot:greendao:2.2.1'
    }
    
    

    3.2 Coding

    好了,所有准备工作都做好了,现在开始使用GreenDao了。

    1. 编写Actitvity&XML文件

    这里需要三个文件,一个用来显示的Activity,和两个XML文件。

    Paste_Image.png Paste_Image.png

    2. 数据库部分代码:

    private void setupDatabase() {    
    DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "testTable_db", null);    
      db = helper.getWritableDatabase();   
      daoMaster = new DaoMaster(db);    
      daoSession = daoMaster.newSession();
    }
    

    3.增、删、改、查

    String str=inputEditText.getText().toString().trim();
    String comment="comment";
    TestTable table1= new TestTable(null,str,comment,new Date());
    daoSession.getTestTableDao().insert(table1);
    
    DeleteQuery deleteQuery=daoSession.getTestTableDao().queryBuilder() 
                            .where(TestTableDao.Properties.Id.gt(0))
                            .buildDelete();
    deleteQuery.executeDeleteWithoutDetachingEntities();
    
    String comment="comment2";
    String str=inputEditText.getText().toString().trim();
    Query query = daoSession.getTestTableDao().queryBuilder()
                        .where(TestTableDao.Properties.Text.eq(str))        
                        .orderAsc(TestTableDao.Properties.Date)        
                        .build();
    List<TestTable> list = query.list();
    TestTable table1 = list.get(0);
    table1.setComment(comment);
    daoSession.getTestTableDao().update(table1);
    
    Query query = daoSession.getTestTableDao().queryBuilder() 
                            .where(TestTableDao.Properties.Text.eq(str))
                            .orderAsc(TestTableDao.Properties.Date) 
                            .build();
    List<testTable> list = query.list();
    

    4.Demo

    GIF.gif

    5.最后

    官方介绍:http://greenrobot.org/greendao/documentation//introduction/
    官方repo:https://github.com/greenrobot/greenDAO

    相关文章

      网友评论

        本文标题:GreenDao 使用

        本文链接:https://www.haomeiwen.com/subject/zjfrjttx.html