美文网首页
greenDAO3的使用

greenDAO3的使用

作者: Yangxy_Lazy | 来源:发表于2018-03-24 18:58 被阅读0次

    1、greenDAO3的基本介绍:
    greenDAO3使用注解的方式定义实体类(entity),并且是通过安装gradle插件来生成代码。之前的版本则是通过建立一个独立的java工程来存放生成的文件。

    2、greenDAO3的配置:
    ①在gradle的dependencies中导入最新版本的依赖:
    compile 'org.greenrobot:greendao:3.0.1'
    compile 'org.greenrobot:greendao-generator:3.0.0'
    ②配置gradle:gradle会自动去maven仓库下载一个gradle的插件,用来生成数据库相关的代码
    apply plugin: 'org.greenrobot.greendao'

    buildscript {
    repositories {
    mavenCentral()
    }
    dependencies {
    classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0'
    }
    }

    ③每次Make Project的时候,greenDAO回去扫描项目中的所有的@Entity的文件(所有的greenDAO中数据库的实体类),根据实体类生成DaoSession,DaoMaster以及所有实体类的Dao类,生成的默认目录是:build/generated/source/greendao,可以将该路径下生成的文件放到所需要的目录下。若不想移动生成的文件,则可以在gradle中自定义文件生成的路径:
    greendao {
    schemaVersion 1
    daoPackage 'com.wyk.greendaodemo.greendao.gen'
    targetGenDir 'src/main/java'
    }

    3、greenDao3的使用:
    ①编写实体文件:

    import org.greenrobot.greendao.annotation.Entity;  
    import org.greenrobot.greendao.annotation.Id;  
    import org.greenrobot.greendao.annotation.Transient;  
    
    @Entity  
    public class User {  
        @Id  
        private Long id;  
        private String name;  
        @Transient  
        private int tempUsageCount; // not persisted  
    }  
    

    注解解释:
    @Entity:将普通的java文件变成一个能够被greenDAO识别的数据库类型的实体类。
    @Id:通过这个注解标记的字段必须是Long类型的,这个字段在数据库中表示它就是默认自增的。
    @Transient:表示这个字段不会被写入数据库,只是作为普通的java类字段,用来临时存储数据,不会被持久化。

    ②编写实体文件后,点击MakeProject,greenDAO3会自动生成一些文件。(User中的get,set方法和一些构造函数,还生成了DaoMaster,DaoSession,UserDao)

    ③初始化数据库:
    DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(MyApplication.getContext(),"otes-db",null);
    DaoMaster daoMaster = new DaoMaster(devOpenHelper.getWritableDatabase());
    DaoSession daoSession = daoMaster.newSession();
    UserDao userDao = daoSession.getUserDao();

    ④插入数据:
    User user = new User(null,"yangxy");
    userDao.insert(user);

    ⑤查找数据:
    List<User> userList = userDao.queryBuilder()
    .where(UserDao.Properties.Id.notEq(999))
    .orderAsc(UserDao.Properties.Id)
    .limit(5)
    .build().list();

    ⑥修改数据:修改数据的第一步是要把需要修改的条目给查出来,然后修改该条目,最后调用userDao的update方法。
    User findUser = userDao.queryBuilder().where(UserDao.Properties.Name.eq("wyk")).build().unique();
    if(findUser != null) {
    findUser.setName(newName);
    userDao.update(findUser);
    Toast.makeText(MyApplication.getContext(), "修改成功", Toast.LENGTH_SHORT).show();
    } else {
    Toast.makeText(MyApplication.getContext(), "用户不存在", Toast.LENGTH_SHORT).show();
    }

    ⑦删除数据:先查询出需要删除的条目,然后调用userDao的deleteByKey将该条目的主键传入即可删除。

    User findUser = userDao.queryBuilder().where(UserDao.Properties.Name.eq("wyk")).build().unique();
    if(findUser != null){
    userDao.deleteByKey(findUser.getId());
    }

    4、数据库的升级:
    如果某张表修改了字段,或者新建了一张表,需要将build.gradle中的schemaVersion,否则当升级APP

    相关文章

      网友评论

          本文标题:greenDAO3的使用

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