greenDao基础使用

greenDao官方文档中介绍,其效率要优于其他几个ORM框架,也有小伙伴验证过,其效率确实挺不错。所以greenDao还是有必要学一学的。毕竟只是用AndroidSQLiteOpenHelper效率不是低了一丁点。在学习了greenDao之后感觉还是蛮好用的。在这里记录下使用方法。

集成

在一开始学习的使用,查看官方文档。没有找到greenDao的完成配置方式。可能是我不够细心。下面是完全的greedDao的配置。想要查看配置的请点这里
build.gradle文件中添加:

apply plugin: 'org.greenrobot.greendao'

 greendao {
        schemaVersion 1
        daoPackage 'xyz.magicer.greendaodemo.dao'  //包名
        targetGenDir 'src/main/java'  //生成目录
    }


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

在项目中的build.gradle中添加

buildscript {
    repositories {
        jcenter()
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:2.2.2'

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
        classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1'
    }
}

使用

官方文档中关于部分注解的说明:点这里

创建entity文件

@Entity
public class User {

    @Id
    private long id;
    private String name;
    private int age;

    public int getAge() {
        return this.age;
    }

    public void setAge(int age) {
        this.age = age;
    }

    public String getName() {
        return this.name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public long getId() {
        return this.id;
    }

    public void setId(long id) {
        this.id = id;
    }
}

编译

编译一下工程之后就会生成DaoMasterDaoSessionUserDao三个文件。

使用

一个简单的使用实例如下。

        DaoMaster.DevOpenHelper openHelper = new DaoMaster.DevOpenHelper(this, "user.db", null);
        DaoMaster daoMaster = new DaoMaster(openHelper.getWritableDatabase());
        DaoSession daoSession = daoMaster.newSession();
        UserDao userDao = daoSession.getUserDao();
        User user = new User(0, "zhang3", 19);
        userDao.insert(user);

        List magicer= userDao.queryBuilder().where(UserDao.Properties.Name.eq("magicer"))
                .orderDesc()
                .build()
                .list();

ClassCastException

Schema.java

java.lang.ClassCastException: java.lang.Integer cannot be cast to java.lang.Long

参考

  • 官方文档

  • 官方源码 GIT

你可能感兴趣的:(android)