Andrid数据库框架——greenDAO(一)

来源:互联网 发布:如何开放服务器端口 编辑:程序博客网 时间:2024/05/16 07:39

我们正常项目开发中,经常会用到数据库。Andorid中自带SQLite数据库,SQLite是一个嵌入式关系数据库,我们在使用它的时候,需要些很多sql语句,查询解析比较耗费时间。特别是对有些Android开发人员开说对sql语句不是很熟悉,拼错一点可能就需要浪费很多时间。所以很多时候我们使用Android中SQLite的时候都会使用一些ORM框架来简化我们的工作量。

ORM :对象关系映射 。java中我们都习惯于操作对象。ORM就是帮我们把数据库中的数据映射成对象方便我们操作。

市场是的ORM框架很多,比如greenDAO , OrmLite , LitePal , XUtil ,ActiveAndroid等等。那我们怎么选怎一款比较好的ORM框架呢?。首先我们先看一个报表:国内Top500Android应用分析报告前500的应用基本就是一些大厂的应用了。我们可以看到用greenDAO 的和用OrmLite 的比较多,greenDAO 最多。在看这些框架在github中star量,目前greenDAO 也是最多的。所以我们选择greenDAO 。

greenDAO :
github地址:https://github.com/greenrobot/greenDAO
官网:http://greenrobot.org/greendao/

greenDAO的特点:
* 最高性能(大概为Android最快的ORM); greenDAO官方测试
* 易于使用强大的API涵盖了关系,并加入
* 最小内存消耗
* 小库的大小(<100KB),让您的生成时间低,以避免65K限制的方法
* 数据库加密:greenDAO支持SQLCipher,让您的用户的数据安全
* 强大的社区:超过5.000 GitHub上星显示有一个强大而活跃的社区

开始集成:

第一步在build.gradle中加入下面依赖

buildscript {    repositories {        mavenCentral()    }    dependencies {        classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1'    }}apply plugin: 'org.greenrobot.greendao'dependencies {    compile 'org.greenrobot:greendao:3.2.0'}

在build.gradle中配置版本和路径

greendao {    schemaVersion 1  //我们的数据库的版本号  当数据库升级的时候可以在这里改版本    daoPackage 'com.hsm.bxt.db'  //自动生成的DaoMaster、DaoSession、Dao的包名  根据自己想放的位置改变即可    targetGenDir 'src/main/java'  //自动生成的DaoMaster、DaoSession、Dao的路径}

第二步创建实体类

package com.chs.greendaotext;import org.greenrobot.greendao.annotation.Entity;import org.greenrobot.greendao.annotation.Id;import org.greenrobot.greendao.annotation.Property;import org.greenrobot.greendao.annotation.Generated;/** * 作者:chs on 2016/11/29 14:14 * 邮箱:657083984@qq.com */@Entitypublic class Note {    @Id    private Long id;    @Property(nameInDb = "TITLE")    private String title;    @Property(nameInDb = "DES")    private String des;}

编译的时候greenDao会给我们自动生成构造方法和get set 方法。

@Id注解选择 long属性作为实体ID。在数据库术语中,它的主键。参数自动增量 是使ID值不断增加。

@Property让你定义一个非默认的列名,其属性映射到数据库。如果不存在,greenDAO将在SQL杂交方式使用字段名(大写,下划线,而不是骆驼情况下,例如 customName将成为 CUSTOM_NAME)。
注解的含义可以看这篇文章:GreenDao 3.X之注解

然后这时候点击build中的make project 就可以自动生成相应的文件了:DaoMaster,DaoSession,NoteDao。
这里写图片描述

DaoMaster:入口点使用greenDAO。DaoMaster保存数据库对象(SQLiteDatabase)和管理DAO类(而不是对象)为特定的模式。它的静态方法来创建表或删除它们。它的内部类OpenHelper和DevOpenHelper是创建SQLite数据库架构SQLiteOpenHelper实现。

DaoSession:管理所有可用的DAO对象为特定的模式,您可以使用获得的getter方法之一。DaoSession还提供了一些通用的持久性的方法,如插入,装载,更新,刷新和删除实体。

NoteDao:数据访问对象(DAO)坚持和查询实体。对于每一个实体,greenDAO生成一个DAO。它具有更持久的方法比DaoSession。

第三步使用

然后我们就可以使用greenDao了。根据官方demo我们先在application中简单使用一下,下一篇在封装使用。

package org.greenrobot.greendao.example;import android.app.Application;import org.greenrobot.greendao.database.Database;import org.greenrobot.greendao.example.DaoMaster.DevOpenHelper;public class App extends Application {    /** A flag to show how easily you can switch from standard SQLite to the encrypted SQLCipher. */    public static final boolean ENCRYPTED = true;//是否加密    private DaoSession daoSession;    @Override    public void onCreate() {        super.onCreate();        DevOpenHelper helper = new DevOpenHelper(this, ENCRYPTED ? "notes-db-encrypted" : "notes-db");        Database db = ENCRYPTED ? helper.getEncryptedWritableDb("super-secret") : helper.getWritableDb();        daoSession = new DaoMaster(db).newSession();    }    public DaoSession getDaoSession() {        return daoSession;    }}

建一个activity 在里面实现 增、删、改、查

NoteDao是用来操控数据库的,所以首先我恩得获得NoteDao的对象

 // get the note DAO        DaoSession daoSession = ((App) getApplication()).getDaoSession();        noteDao = daoSession.getNoteDao();

增:noteDao . insert(Note note);

删:noteDao . delete(note);

改:noteDao .update(note);

查:noteDao.loadAll(Note.class);

OK 简单用法就这样了 下一篇稍微封装一下。毕竟项目中我们用一个框架一般都要封装下载用 会更方便。

0 0
原创粉丝点击