博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
043 Android 数据库框架GreenDao使用
阅读量:4921 次
发布时间:2019-06-11

本文共 5614 字,大约阅读时间需要 18 分钟。

 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(推荐)

 

转载于:https://www.cnblogs.com/luckyplj/p/10572231.html

你可能感兴趣的文章
在Net下处理Json
查看>>
mbed学习之 PWMOUT
查看>>
【旧文章搬运】隐藏驱动完整攻略(基础篇)
查看>>
maven快速入门
查看>>
NSFileHandle(文件对接器)
查看>>
初试部署自己的网站到服务器
查看>>
随机获取10条数据的方法
查看>>
Linux下搭建Python开发环境部署
查看>>
[Ramda] Filter, Reject and Partition
查看>>
servlet中不能没有无参构造函数
查看>>
js 中{},[]中括号,大括号使用详解
查看>>
JavaScript变量及数据类型
查看>>
Python 笔试 —— 效率与优雅
查看>>
windows 10 使用 tricks
查看>>
音乐的聆听 & 古典音乐的入门
查看>>
eclipse打开html文件
查看>>
转csdn某位同学的 感谢bmfont
查看>>
linux 添加、删除 route
查看>>
oracle 常用的几个网址
查看>>
oracle 12.2.0.1 使用 active dataguard broker 之一
查看>>