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对应内容)替换

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.administrator.test62360safeguard">

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

Android 数据库框架GreenDao使用的更多相关文章

  1. Android数据库框架——GreenDao轻量级的对象关系映射框架,永久告别sqlite

    Android数据库框架--GreenDao轻量级的对象关系映射框架,永久告别sqlite 前不久,我在写了ORMLite这个框架的博文 Android数据库框架--ORMLite轻量级的对象关系映射 ...

  2. Android 数据库框架GreenDao实战使用

    1.添加记录(SQLite 增) 2.删除记录(SQLite 删) 3.修改记录(SQLite 改) 4.查询记录(SQLite 查) <1> DAO查询 <2>QueryBu ...

  3. Android 数据库框架总结(转)

    转自 http://blog.csdn.net/da_caoyuan/article/details/61414626 一:OrmLite 简述: 优点: 1.轻量级:2.使用简单,易上手:3.封装完 ...

  4. Android 数据库框架总结,总有一个适合你!

    一:OrmLite 简述: 优点: 1.轻量级:2.使用简单,易上手:3.封装完善:4.文档全面.缺点:1.基于反射,效率较低(本人还没有觉得效率低):2.缺少中文翻译文档 jar包 地址:http: ...

  5. Android数据库框架——ORMLite轻量级的对象关系映射(ORM)Java包

    Android数据库框架--ORMLite轻量级的对象关系映射(ORM)Java包 事实上,我想写数据库的念头已经很久了,在之前写了一个答题系统的小项目那只是初步的带了一下数据库,数据库是比较强大的, ...

  6. ORM数据库框架 greenDAO SQLite MD

    Markdown版本笔记 我的GitHub首页 我的博客 我的微信 我的邮箱 MyAndroidBlogs baiqiantao baiqiantao bqt20094 baiqiantao@sina ...

  7. Android 数据库框架OrmLite的使用(一)

    在这里记录下最基本的用法,官网上可了解相关的介绍. 1.下载OrmLite jar 在下载android的:ormlite-android-4.48.jar和ormlite-core-4.48.jar ...

  8. Android 数据库框架ormlite

    Android 数据库框架ormlite 使用精要 前言 本篇博客记录一下笔者在实际开发中使用到的一个数据库框架,这个可以让我们快速实现数据库操作,避免频繁手写sql,提高我们的开发效率,减少出错的机 ...

  9. Android数据库框架-----ORMLite关联表的使用

    上一篇已经对ORMLite框架做了简单的介绍:Android数据库框架-----ORMLite 的基本用法~~本篇将介绍项目可能会使用到的一些用法,也为我们的使用ORMLite框架总结出一个较合理的用 ...

随机推荐

  1. 3D Text & GUI Text & GUI Texture

    [Unity3D Text] 3D Text通过"Text Mesh"组件."MeshRender共同完成",通过如下方法要以创建一个3D Text. 3D T ...

  2. java Web 过滤器Filter详解

    简介 Filter也称之为过滤器,Web开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊 ...

  3. Linux开机启动详解

    Linux开机启动程序详解 我们假设大家已经熟悉其它操作系统的引导过程,了解硬件的自检引导步骤,就只从Linux操作系统的引导加载程序(对个人电脑而言通常是LILO)开始,介绍Linux开机引导的步骤 ...

  4. 【总结整理】原创概念原创idea---摘自《结网》

    假如你有一个原创想法,搜索引擎是否已有现成产品与自己的想法一致,如果有,研究他可以节省很多摸索的时间:若没有,那就是一个货真价实的原创idea: 第一类:受到现有产品的启发,将既有概念进行了转换. 第 ...

  5. selenium2 断言失败自动截图 (四)

    一般web应用程序出错过后,会抛出异常.这个时候能截个图下来,当然是极好的. selenium自带了截图功能. //获取截图file File scrFile= ((TakesScreenshot)d ...

  6. Python 网络爬虫 009 (编程) 通过正则表达式来获取一个网页中的所有的URL链接,并下载这些URL链接的源代码

    通过 正则表达式 来获取一个网页中的所有的 URL链接,并下载这些 URL链接 的源代码 使用的系统:Windows 10 64位 Python 语言版本:Python 2.7.10 V 使用的编程 ...

  7. 性能优化之_android多线程

    本文大纲为: 如何创建线程 线程间如何通讯 线程间如何安全的共享信息 一.线程的创建 Thread在run方法中执行具体事务,或者传入一个runnable对象,但是不能调用view控件的更新方法,但是 ...

  8. Swing自定义JScrollPane的滚动条设置,重写BasicScrollBarUI方法

    Swing自定义JScrollPane的滚动条设置,重写BasicScrollBarUI方法 摘自:https://blog.csdn.net/qq_31635851/article/details/ ...

  9. LibreOJ 6001 太空飞行计划(最大流)

    题解:首先源点向每个实验建边,流量为经费的值,实验向器材建边,值为无限大,器材向终点建边,值为价值 然后跑一遍最大流就能跑出所谓的最大闭合图的点值之和. 代码如下: #include<queue ...

  10. TriggerAction扩展----ExInvokeCommandAction

    Wp&Win8中使用命令绑定时,除了Button控件自带命令绑定,其他的时候是用Interactivity库中的InvokeCommandAction实现的(Win8 需要额外安装第三方NuG ...