GreenDAO 3.0

一、       简介

greenDao是一个开源项目,为了帮助Android开发者在sqlite中数据存储,SQLite是一个轻量级的关系型数据库。以下是最近查看各位大神文章总结的使用方式,多谢各路大神

二、       配置

1.    为主模块添加依赖,如下图所示。

2.    继续在同一文件中添加greendao Gradle Plugin 及greendao library,如下图所示。

schemaVersion---->指定数据库schema版本号,迁移等操作会用到

daoPackage------>指定通过greenDao服务插件生成的数据库代码文件的包名,默认为你的entity所在的包名

targetGenDir-------->数据库代码文件所在的目录,默认是“build/gererated/source/greenDao”,这里我们将其自定义到我们的Java目录中“src/main/java”方便查看和编辑,不配置的话将会保存在默认目录下。

 除了这些属性之外,还有一些属性如下:

targetGenDirTest:设置生成单元测试目录。

generateTests:设置自动生成单元测试用例。

3.    创建一个entity(一个类对应一张表,一个属性对应一个列)

@Entity注解将Java类转换成数据库支持的实体,同时指导GreenDAO创建必需的代码。它支持配置日常的设置,使用方式如下图:

@Id:通过这个注解标记的字段必须是Lon/long类型的,这个字段在数据库中表示它就是主键

@Transient:表明这个字段不会被写入数据库,只是作为一个普通的java类字段,用来临时存储数据的,不会被持久化

其它属性见下图所示:

4.    执行Make Project

 

编译项目,User实体类会自动编译,生成getset方法并且会在com.anye.greendao.gen目录下生成三个文件

三、       使用

 

1.    将Demo中的以下两个文件拷贝到模块中(不使用数据库升级功能请跳过此步骤

修改HMROpenHelper文件,如下图所示

2.    初始化数据库,创建MyApplication类

notes-db”是我们自定的数据库名字。一个DaoMaster就代表着一个数据库的连接;DaoSession可以让我们使用一些Entity的基本操作和获取Dao操作类,DaoSession可以创建多个,每一个都是属于同一个数据库连接的。

public class MyApplication extends Application { private DaoMaster.DevOpenHelper mHelpter; private SQLiteDatabase db; private DaoMaster mDaoMaster; private DaoSession mDaoSession; public static MyApplication instances; @Override    public void onCreate() {     super.onCreate();     instances = this;     setDatabase(); } public static MyApplication getInstances(){     return instances; }/** * 设置greenDao */private void setDatabase() {    // 通过 DaoMaster 的内部类 DevOpenHelper,你可以得到一个便利的 SQLiteOpenHelper 对象。    // 可能你已经注意到了,你并不需要去编写「CREATE TABLE」这样的 SQL 语句,因为 greenDAO 已经帮你做了。    // 注意:默认的 DaoMaster.DevOpenHelper 会在数据库升级时,删除所有的表,意味着这将导致数据的丢失。    // 所以,在正式的项目中,你还应该做一层封装,来实现数据库的安全升级。   mHelper = new DaoMaster.DevOpenHelper(this,"notes-db");    db = mHelper.getWritableDatabase();    // 注意:该数据库连接属于 DaoMaster,所以多个 Session 指的是相同的数据库连接。     mDaoMaster = new DaoMaster(db);     mDaoSession = mDaoMaster.newSession();}public DaoSession getDaoSession() {      return mDaoSession;}public SQLiteDatabase getDb() {      return db;  }}

 

3.    更改MyApplicaton(不使用数据库升级请跳过此步骤

将步骤2

更改为

更改为

4.    获取数据库。在要使用数据库的位置添加如下语句

UserDao mUserDao =MyApplication.getInstances().getDaoSession().getUserDao();

 

SQL可能比较难写,而且只在运行时才能发现错误。QueryBuilder类让你不用SQL构建自定义查询,并帮你在编译时就发现错误。通过userDaoqueryBuilder()方法,生成一个查找构造器,可以给构造器添加where条件判断、按照某某字段排序以及查询的条数等基本的数据库操作。list()方法表示查询的结果为一个集合。更多使用见第四部分参考文件

5.    增加

6.    删除

基本操作:

使用QueryBuilder:

7.    修改

基本操作:

使用QueryBuilder:

8.    查

基本操作:

使用QueryBuilder:


四、       数据库升级

1.    执行第三部分使用中的步骤1,3

2.    更改Entity(比如demo中的User类)。

3.    修改主模块的build.gradle文件中的版本号加1:

4.    makeProject

5.    在手机上运行即可自动更新数据库。

6.    附:数据库升级原理:

使用DevOpenHelper打开数据库时,在它的onUpgrade方法中会调用以下两个方法:

这种方式意味着每次都重新创建数据库,所以数据不会报错。这种方式只适合开发人员调试用,在app上线后,数据库升级需要自己封装一个方法继承DaoMaster.OpenHelper,在本文中即HMROpenHelper.class类。在这个类中重写了OnUpgrade()方法:

它调用了MigrationHelper.class类的migrate方法,这个类用于数据库升级过程中先将原表改名为临时表,再新建新表,最后将临时表的数据导入新表并删除临时表:

五、       参考文件

配置参考:http://www.jianshu.com/p/4986100eff90

更多种注解参考:http://blog.csdn.net/bugproof/article/details/52074959

QuerBuilder增删改查参考:

http://blog.csdn.net/njweiyukun/article/details/51893092

QueryBuilder更多使用方法参考:http://blog.csdn.net/a284266978/article/details/44983927

GreenDAO官网:http://greenrobot.org/

数据库升级参考:http://www.tuicool.com/articles/VJ7bAnu


结束语:本文demo会随后在评论中附上:)


更多相关文章

  1. SpringBoot 2.0 中 HikariCP 数据库连接池原理解析
  2. Unity与Android交互-基础知识
  3. android 绕过R文件,通过代码获取styleable的属性
  4. Android(安卓)Studio中aidl的使用示例
  5. nexus 7(一代)上android和ubuntu多系统启动(包括ubuntu touch和u
  6. android菜鸟学习笔记4----android项目结构
  7. android 混淆器的使用 proguard.flags
  8. android文件系统system-ramdisk-userdata三者之间的关系
  9. 关于SQLite数据库的那些事儿

随机推荐

  1. TCPIP卷一(10):EIGRP的DUAL算法和SIA解决方
  2. TCPIP卷一(2):二层封装之–PPP与FR
  3. TCPIP卷一(6):距离矢量与链路状态 路由选择
  4. docker进程分析
  5. 同城异地灾备
  6. TCPIP卷一(5):Classless【无类】与Classful
  7. 容器化应用
  8. TCPIP卷一(4):静态路由案例分析
  9. 围城
  10. 话说 AQS