资讯专栏INFORMATION COLUMN

GreenDao的初次使用--号称Android最快的关系型数据库

番茄西红柿 / 2833人阅读

一、准备工作

1、项目build.gradle文件下的dependencies中引入插件:

classpath org.greenrobot:greendao-gradle-plugin:3.2.1

2、在module的build.gradle文件下顶部依赖插件:

apply plugin: org.greenrobot.greendao

3、在module的build.gradle文件下的dependencies中引入依赖:

compile org.greenrobot:greendao:3.2.0

二、GreenDao的注解

1、实体@Entity注解:

  schema:告知GreenDao当前实体属于哪个schema

  active:标记一个实体处于活动状态,活动实体有更新、删除和刷新方法

  nameInDb:在数据中使用的别名,默认使用的是实体的类名

  indexes:定义索引,可以跨越多个列

  createInDb:标记创建数据库表

2、基础属性注解

  @Id :主键 Long型,可以通过@Id(autoincrement = true)设置自增长

  @Property:设置一个非默认关系映射所对应的列名,默认是的使用字段名 举例:@Property (nameInDb="name")

  @NotNul:设置数据库表当前列不能为空

  @Transient :添加次标记之后不会生成数据库表的列

3、索引注解

  @Index:使用@Index作为一个属性来创建一个索引,通过name设置索引别名,也可以通过unique给索引添加约束

  @Unique:向数据库列添加了一个唯一的约束

4、关系注解

  @ToOne:定义与另一个实体(一个实体对象)的关系

  @ToMany:定义与多个实体对象的关系

三、简单使用----使用管理类DBManager,操作名称为test_db的数据库,完成数据库中用户实体类User的增删改查等操作

1、创建实体用户类User,使用GreenDao进行注解,ReBuild项目。

/**
 * 

Description: */ @Entity public class User { @Id(autoincrement = true) private Long id ; private String name ; private int age ; public User(String name,int age){ this.name = name ; this.age = age ; } @Generated(hash = 1309193360) public User(Long id, String name, int age) { this.id = id; this.name = name; this.age = age; } @Generated(hash = 586692638) public User() { } public Long getId() { return this.id; } public void setId(Long id) { this.id = id; } public String getName() { return this.name; } public void setName(String name) { this.name = name; } public int getAge() { return this.age; } public void setAge(int age) { this.age = age; } }

View Code

2、创建管理类DBManager,完成对User的增删改查方法

public class DBManager {

    private static DBManager instance ;
    private final static String dbName = "test_db";

    private Context mContext ;

    private DBManager(Context context){
        this.mContext = context ;
        openHelper = new DaoMaster.DevOpenHelper(context,dbName);
    }


    private DaoMaster.DevOpenHelper openHelper = null ;

    public static DBManager getInstance(Context context){
        if(instance == null){
            synchronized (DBManager.class){
                if(instance == null){
                    instance = new DBManager(context);
                }
            }
        }
        return instance ;
    }

    private SQLiteDatabase getWriteableDatabase(){
        if(openHelper == null){
            openHelper = new DaoMaster.DevOpenHelper(mContext,dbName);
        }
        return openHelper.getWritableDatabase();
    }
    private SQLiteDatabase getRedadableDatabase(){
        if(openHelper == null){
            openHelper = new DaoMaster.DevOpenHelper(mContext,dbName);
        }
        return openHelper.getReadableDatabase() ;
    }


    public void saveUser(User user){
        DaoMaster daoMaster = new DaoMaster(getWriteableDatabase());
        DaoSession daoSession = daoMaster.newSession();
        UserDao userDao = daoSession.getUserDao();
        //存入user对象
        userDao.save(user);

    }

    public void saveUsers(List users){
        DaoMaster daoMaster = new DaoMaster(getWriteableDatabase());
        DaoSession daoSession = daoMaster.newSession();
        UserDao userDao = daoSession.getUserDao();
        userDao.saveInTx(users);
    }

    public void delteUser(User user){
        DaoMaster daoMaster = new DaoMaster(getWriteableDatabase());
        DaoSession daoSession = daoMaster.newSession();
        UserDao userDao = daoSession.getUserDao();
        userDao.delete(user);
    }

    public void updateUser(User user){
        DaoMaster daoMaster = new DaoMaster(getWriteableDatabase());
        DaoSession daoSession = daoMaster.newSession();
        UserDao userDao = daoSession.getUserDao();
        userDao.update(user);
    }

    public List queryUser(){
        DaoMaster daoMaster = new DaoMaster(getRedadableDatabase());
        DaoSession daoSession = daoMaster.newSession();
        UserDao userDao = daoSession.getUserDao();
        QueryBuilder qb = userDao.queryBuilder();
        List list = qb.list();
        return list ;
    }

    public List queryUser(int age){
        DaoMaster daoMaster = new DaoMaster(getRedadableDatabase());
        DaoSession daoSession = daoMaster.newSession();
        UserDao userDao = daoSession.getUserDao();
        QueryBuilder qb = userDao.queryBuilder();
        //添加查询条件
        qb.where(UserDao.Properties.Age.eq(age));
        List list = qb.list();
        return list ;
    }

}
View Code

 

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/2446.html

相关文章

  • AndroidgreenDao使用

    摘要:的官方文档适用于您的数据库的的地址的讨论区加密官方说明地址使用文档原理的中有以下几个核心类,也是后面常用到的,先来大概了解下他们的结构。文章大纲 一、greenDao简介二、greenDao实战三、项目源码下载四、参考文章 一、greenDao简介 1. 什么是greenDao   GreenDAO是一个开源的Android ORM(对象/关系映射),通过ORM(称为对象/关...

    番茄西红柿 评论0 收藏0
  • 精华阅读第 12 期 | 最新 App Store 审核指南与10大被拒理由?

    摘要:同时,本文还分享了阿里巴巴的实践分享,如果你在开发一款,你也可以读一下最新审核指南与大被拒理由。对于希望更快获得苹果审核以及想在发布应用或者游戏的童鞋们来说,这大理由是需要特别注意的。 很多时候,我们对技术的追求是没有止境的,我们需要不断的学习,进步,再学习,再进步!本文系移动精英开发俱乐部的第12期文章推荐阅读整理,其中涉及到了 Android 数据库框架,架构设计中的循环引用,同时...

    lastSeries 评论0 收藏0
  • 精华阅读第 12 期 | 最新 App Store 审核指南与10大被拒理由?

    摘要:同时,本文还分享了阿里巴巴的实践分享,如果你在开发一款,你也可以读一下最新审核指南与大被拒理由。对于希望更快获得苹果审核以及想在发布应用或者游戏的童鞋们来说,这大理由是需要特别注意的。 很多时候,我们对技术的追求是没有止境的,我们需要不断的学习,进步,再学习,再进步!本文系移动精英开发俱乐部的第12期文章推荐阅读整理,其中涉及到了 Android 数据库框架,架构设计中的循环引用,同时...

    KunMinX 评论0 收藏0
  • GreenDao入门

    摘要:核心类介绍是的入口也是顶级对象对于一个指定的表单持有数据库对象数据库并且能够管理类能够创建表和删除表其内部类与是创建数据库的的具体实现对于一个指定的表单可以管理所有的对象。也能够对实体类执行,操作。 1. 什么是greenDao 弄明白greenDao之前我们应该先了解什么是ORM(Object Relation Mapping 即 对象关系映射),说白了就是将面向对象编程语言里的对象...

    edagarli 评论0 收藏0
  • GreenDao数据带你出坑

    摘要:导入这个数据库加密包主要是为了数据库升级的时候使用的。上线时改成加密数据库即可。数据库升级这里可以重复添加文件。好了,这样的话的很多问题都已经解决了,接下来就让我们愉快的在项目中添加这个数据库包吧。 现在在Android中使用的数据库一般都是用的GreenDao,我们准备使用GreenDao的时候从网上看了很多文章,感觉很多技术点都不是我们关注的重点,经过实践以后觉得好多文章的内容都不...

    nodejh 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<