什么是GreenDao?

  • GreenDao是一款开源的数据库框架,使用它可以方便高效地操作SQLite Database

GreenDao有什么优势?

  • 最高性能(可能是Android最快的ORM); 我们的基准也是开源的
  • 易于使用的功能强大的API涵盖关系和联接
  • 最小的内存消耗
  • Library占用极小(<100KB),以保持您的建立时间较低,并避免65k方法限制
  • 数据库加密:greenDAO支持SQLCipher,以保护用户的数据安全
  • 更多详情请察看GreenDao的官网 —— [ greenDAO ]

在Android Stuidio上快速配置GreenDao

  • 首先导入GreenDao 依赖包,在project视图的app下的gradle里添加如下:
    dependencies {    compile fileTree(dir: 'libs', include: ['*.jar'])    androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {        exclude group: 'com.android.support', module: 'support-annotations'    })    compile 'com.android.support.constraint:constraint-layout:1.0.2'    //wesker add GreenDao start    compile 'org.greenrobot:greendao:3.0.1'    compile 'org.greenrobot:greendao-generator:3.0.0'    //wesker add GreenDao end    testCompile 'junit:junit:4.12'}

  • 生成GreenDao所依赖的插件,需要去maven仓库下载这个插件。在project视图的app下的gradle里添加
//wesker add GreenDao startapply plugin: 'org.greenrobot.greendao'buildscript {    repositories {        mavenCentral()    }    dependencies {        classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0'    }}greendao {    schemaVersion 1    daoPackage 'com.greendaodemo.gen'//1    targetGenDir 'src/main/java'}//wekser add GreenDao end

名称 含义
schemaVersion 数据库schema版本号,迁移等操作会用到
daoPackage 通过gradle插件生成的数据库相关文件的包名,默认为你的entity所在的包名
targetGenDir 自定义生成数据库文件的目录

- 最后还要配置最后一步,在project下的gradle里配置

        classpath 'com.android.tools.build:gradle:2.3.1'        classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0'

这一步不配置的话可能会报Error:Execution failed for task ‘:app:greendao’.这个错误


- 到此GreenDao配置完成,接下来我们来看看怎么使用它吧。

使用GreenDao

  • 编写一个User实体类

  • 执行 Build->Make Project。GreenDao会自动帮你生成get和set方法。并且生成如下文件

@Entitypublic class User {    @Id(autoincrement = true)    private Long id;    private String username;    @Transient    private int temp;    public String getUsername() {        return this.username;    }    public void setUsername(String username) {        this.username = username;    }    public long getId() {        return this.id;    }    public void setId(long id) {        this.id = id;    }    public void setId(Long id) {        this.id = id;    }    @Generated(hash = 79420138)    public User(Long id, String username) {        this.id = id;        this.username = username;    }    @Generated(hash = 586692638)    public User() {    }}

开始增删改查操作

  • 首先开始初始化数据库
        //创建一个数据库,名字为"wesker"        DaoMaster.DevOpenHelper devOpenHelper = new DaoMaster.DevOpenHelper(ApplicationContextHodler.getContext(), "wesker", null);        //一个DaoMaster就代表着一个数据库的连接;        DaoMaster mDaoMaster = new DaoMaster(devOpenHelper.getWritableDatabase());        // DaoSession可以让我们使用一些Entity的基本操作和获取Dao操作类,        // DaoSession可以创建多个,每一个都是属于同一个数据库连接的        DaoSession mDaoSession = mDaoMaster.newSession();        UserDao mUserDao = daoSession.getUserDao(); 
  • Insert
private void insert(){        User mUser = new User(null,username);//如果id为null,那么数据库会为其分配自增长id        mUserDao.insert(mUser);        Toast.makeText(this, "成功插入", Toast.LENGTH_SHORT).show();    }
  • Delete
private void delete(){        User findUser = mUserDao.queryBuilder().where(UserDao.Properties.Username.eq("update_wesker")).build().unique();        if(findUser != null){            mUserDao.deleteByKey(findUser.getId());        }    }

-Update

private void update(){        User findUser = mUserDao.queryBuilder().where(UserDao.Properties.Username.eq("insert_wesker")).build().unique();        if(findUser != null) {            findUser.setUsername("update_wesker");            mUserDao.update(findUser);            Toast.makeText(this, "修改成功", Toast.LENGTH_SHORT).show();        } else {            Toast.makeText(this, "用户不存在", Toast.LENGTH_SHORT).show();        }    }

-Query

private void query(){        List userList = mUserDao.queryBuilder()                .where(UserDao.Properties.Id.notEq(1))                .limit(10)                .build().list();        StringBuilder s = new StringBuilder();        for(User user:userList){            s.append("userId:"+user.getId()+"username:"+user.getUsername());            s.append('\n');        }        display.setText(s);    }

-自定义查询

private void customSql(){        Cursor cursor = mUserDao.getDatabase().rawQuery("select * from wesker", null);        while (cursor.moveToNext()) {            int chatCount = cursor.getInt(0);            String username= cursor.getString(1);        }    }

GreenDao基本配置使用到这就结束啦,第一次写文章如有不足之处还望见谅并请提出,共勉。

更多相关文章

  1. android模拟器操作
  2. Android版本演进中的兼容性问题
  3. 最全最好用的Android(安卓)Studio插件整理
  4. Android(安卓)- Android(安卓)Architecture Components - Room
  5. Android(安卓)Studio 使用jdbc远程连接阿里云主机web数据库(逃坑)
  6. Android(安卓)StrictMode使用
  7. Android(Xamarin)之旅(五)
  8. App Widget ————android 新一代移动操作系统的特征
  9. android插件开发,使用360加固自动多渠道打包

随机推荐

  1. AIDL --- Android中的远程接口(1)
  2. android标题栏进度圈使用方法
  3. Android应用Preference相关及源码浅析(Sh
  4. Android设计模式系列-适配器模式
  5. Android接收RabbitMQ消息。
  6. Android SD卡创建文件和文件夹失败
  7. Android虚拟机与Java虚拟机——两种虚拟
  8. 关于android开机速度性能方面
  9. Android iOS测试区别
  10. Android中sqlite的基本增删查改用法