1.GreenDao3介绍
(1)基本概念
(2)GreenDao3工作原理
(3)GreenDao优点
(4)GreenDao3版本的改进
2.GreenDao3的相关配置概念介绍
(1)配置项目(Project)的build.gradle
(2)配置模组(Module)的build.gradle
3.GreenDao3配置实战
(1)打开现有的Android studio工程
(2)配置项目(Project)的build.gradle
buildscript{ //repositories相当于一个存储jar包的仓库 repositories { mavenCentral() //到网上的Maven仓库的服务器里下载库文件 } //dependencies包含所有真正依赖的库文件 dependencies{ //将GreenDao的插件库文件引入项目 classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1' }}
(3)配置模组(Module)的build.gradle
在文件的最后添加
//应用GreenDao插件apply plugin: 'org.greenrobot.greendao'greendao{ //设置greendao的相关参数 schemaVersion 3 //设置数据库版本 daoPackage 'com.example.lucky.mygreendaotest.gen' //生成DAO、DAOMaster、DAOSession的包名(这句代码应根据实际project文件位置进行相应修改) targetGenDir 'src/main/java' //生成DAOs、DAOMaster、DAOSession的目录}dependencies{ implementation fileTree(dir: 'libs', include: ['*.jar']) //用于项目编译的库文件及所在目录 implementation 'com.android.support:appcompat-v7:28.0.0' //导入greendao的相关库文件 implementation 'org.greenrobot:greendao:3.2.0' implementation 'org.greenrobot:greendao-generator:3.2.0'}
注意:以上代码中有一处要根据实际情况进行修改
daoPackage 'com.example.lucky.mygreendaotest.gen' //生成DAO、DAOMaster、DAOSession的包名(这句代码应根据实际project文件位置进行相应修改)
其中com.example.lucky.mygreendaotest为工程的包名,可用实际工程的manifest.xml文件的包名(package对应内容)替换
(4) 进行项目同步
点击Sync Now
可见如下图
(5)实体类及其注解
<1>介绍
<2>实体类注解及其作用
<3>创建实体类并完成注解
<4>新建实体类后,通过build--->make project 编译工程,会自动生成代码(实体类BlackListCallEntity中有一部分、还有DaoMaster.java、DaoSession.java、BlackListCallEntityDao.java)
注意:主键id的数据类型是Long而不是long
以下是未编译的实体类BlackListCallEntity的代码:
package com.example.administrator.test62360safeguard.Entity;import org.greenrobot.greendao.annotation.Entity;import org.greenrobot.greendao.annotation.Id;import org.greenrobot.greendao.annotation.Generated;@Entity( //设置数据库的表名 nameInDb ="black_list_call")public class BlackListCallEntity { @Id(autoincrement = true) private Long id; //注意:id的数据类型是Long而不是long private String phoneNumber; private String functionType;}
经过编译后的实体类:
package com.example.administrator.test62360safeguard.Entity;import org.greenrobot.greendao.annotation.Entity;import org.greenrobot.greendao.annotation.Id;import org.greenrobot.greendao.annotation.Generated;@Entity( //设置数据库的表名 nameInDb ="black_list_call")public class BlackListCallEntity { @Id(autoincrement = true) private Long id; //注意:id的类型是Long而不是long private String phoneNumber; private String functionType;@Generated(hash = 533022796)public BlackListCallEntity(Long id, String phoneNumber, String functionType) { this.id = id; this.phoneNumber = phoneNumber; this.functionType = functionType;}@Generated(hash = 1836403501)public BlackListCallEntity() {}public Long getId() { return this.id;}public void setId(Long id) { this.id = id;}public String getPhoneNumber() { return this.phoneNumber;}public void setPhoneNumber(String phoneNumber) { this.phoneNumber = phoneNumber;}public String getFunctionType() { return this.functionType;}public void setFunctionType(String functionType) { this.functionType = functionType;}}
(6)新建2个java类(HMROpenHelper、MyGreenDaoApplication)
<1>HMROpenHelper类的源码
package com.example.lucky.mygreendaotest;import android.content.Context;import android.database.sqlite.SQLiteDatabase;import com.example.lucky.mygreendaotest.gen.DaoMaster;//数据库创建工具类public class HMROpenHelper extends DaoMaster.OpenHelper { //构造函数,参数2 name为数据库名称 public HMROpenHelper(Context context, String name, SQLiteDatabase.CursorFactory factory) { super(context, name, factory); }}
<2>MyApplication类的源码
通常我们是不需要指定一个Application的,系统会自动帮我们创建,如果需要创建自己的Application,那也很简单!创建一个类继承Application并在AndroidManifest.xml文件中的application标签中进行注册(只需要给application标签增加name属性,并添加自己的 Application的名字即可)
当Android程序启动时系统会创建一个Application对象,用来存储系统的一些信息。
Android系统自动会为每个程序运行时创建一个Application类的对象且只创建一个,所以Application可以说是单例(singleton)模式的一个类。
package com.example.administrator.test62360safeguard;import android.app.Application;import android.database.sqlite.SQLiteDatabase;import com.example.administrator.test62360safeguard.GreenDao.DaoMaster;import com.example.administrator.test62360safeguard.GreenDao.DaoSession;import com.example.administrator.test62360safeguard.GreenDaoUtils.HMROpenHelper;/** * 注意:MyApplication类继承Application,需要在AndroidManifest.xml文件中进行相关设置 * android:name=".MyApplication" * MyApplication类的作用是封装数据库对象 */public class MyApplication extends Application { private SQLiteDatabase db; //SQLiteDatabase数据库对象 private DaoMaster daoMaster; //daoMaster对象 private DaoSession daoSession; //daoSession对象 public static MyApplication instances; //声明本类的实例对象 @Override public void onCreate() { super.onCreate(); instances=this; //给实例对象赋值 setDatabase(); } private void setDatabase() { //创建数据库,参数2是所创建的数据库的名称 HMROpenHelper hmrOpenHelper=new HMROpenHelper(this,"mydb1",null); db=hmrOpenHelper.getWritableDatabase(); //获取数据库对象 daoMaster=new DaoMaster(db); //获取DaoMaster对象 daoSession=daoMaster.newSession(); } //获取instances 对象 public static MyApplication getInstances(){ return instances; } //获取daoSession对象 public DaoSession getDaoSession(){ return daoSession; } public SQLiteDatabase getDb(){ return db; }}
(7)编译工程,安装到模拟器后,打开应用时,就会自动创建数据库
模拟器中app内的数据库文件导出方法:
6.GreenDao3添加记录(SQLite 增)
(1)基本原理
7.GreenDao3删除记录(SQLite 删)
8.GreenDao3修改记录(SQLite 改)
参考文献:https://www.jianshu.com/p/793f77feeb89
https://www.cnblogs.com/tonycheng93/p/6295724.html(推荐)