我们正常项目开发中,经常会用到数据库。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上星显示有一个强大而活跃的社区
开始集成:
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 */ @Entity public class Note { @Id private Long id; @Property(nameInDb = "TITLE") private String title; @Property(nameInDb = "DES") private String des; }
编译的时候greenDao会给我们自动生成构造方法和get set 方法。
注解的含义可以看这篇文章:GreenDao 3.X之注解
然后这时候点击build中的make project 就可以自动生成相应的文件了:DaoMaster,DaoSession,NoteDao。
然后我们就可以使用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 简单用法就这样了 下一篇稍微封装一下。毕竟项目中我们用一个框架一般都要封装下载用 会更方便。