0. ORM框架--GreenDao 3.0基本使用指南

1. Gradle 的配置

这里可以参照官方的文档进行最新的配置(本示例的版本等你看到可能就不是最新的了),但是值得注意的一点是,GreenDao 3.0与之前的变化比较大,所以用法也区别比较大,建议在搜索时加上版本号3.0进行更精细的搜索

在项目(非Module)的build.gradle 文件中:

buildscript {
repositories {
jcenter()
mavenCentral() // 添加仓库地址
}
dependencies {
classpath 'com.android.tools.build:gradle:2.3.1'
classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' // 添加greendao插件
}
}

在Module级别的 build.gradle 文件中:

apply plugin: 'com.android.application'
apply plugin: 'org.greenrobot.greendao' // 添加插件 dependencies {
compile 'org.greenrobot:greendao:3.2.2' // 添加库
}

参照官方Github连接: https://github.com/greenrobot/greenDAO 更改为最新配置(示例为3.2.2

2. 配置数据库信息

android {
....
greendao {
schemaVersion 1
daoPackage 'com.yourpackagename.greendao.gen'
targetGenDir 'src/main/java'
//targetGenDirTest:设置生成单元测试目录
//generateTests:设置自动生成单元测试用例
}
...
}

daoPackage 'com.yourpackagename.greendao.gen'

指定greendao自动生成文件的存放路径,我个人喜欢起名为greendao.gen

greendao 表示使用的是greendao这个第三方库

gen 表示自动生成,不要手动更改

前面加上自己的包名,这个实际就是一个路径。怎么放按你的习惯和团队规范。

3. 编写实体bean

配置完上面的信息后,点击Sync Now同步一下工程,然后进行实体的编写,这个过程长短依托网络等因素。

注意:

如果同步后没有生成代码,最好的方法就是把项目运行一遍!

/**
* Created by didikee on 2017/9/7.
*/
@Entity
public class User { @Id(autoincrement = true)
private Long id = null; private Long time;
private String name;
private Boolean sex;
@Generated(hash = 1524850927)
public User(Long id, Long time, String name, Boolean sex) {
this.id = id;
this.time = time;
this.name = name;
this.sex = sex;
}
@Generated(hash = 586692638)
public User() {
}
public Long getId() {
return this.id;
}
public void setId(Long id) {
this.id = id;
}
public Long getTime() {
return this.time;
}
public void setTime(Long time) {
this.time = time;
}
public String getName() {
return this.name;
}
public void setName(String name) {
this.name = name;
}
public Boolean getSex() {
return this.sex;
}
public void setSex(Boolean sex) {
this.sex = sex;
} }

注意点:

  1. 类需要加@Entity注解
  2. id 类型必须为:Long而不是Long(这个两个的区别大家肯定知道,容易手误而已,倒是插入数据崩溃)
  3. 如果要实现id自增,在创建实体时id为null即可。

4. 开始操作数据

我习惯写个统一的类管理各类实体Dao

/**
* Created by didikee on 2017/7/19.
*/ public class GreenDaoManager {
private final static String dbName = "d_db";
private static GreenDaoManager mInstance;
private DaoMaster.DevOpenHelper openHelper;
private Context context; private GreenDaoManager(Context context) {
this.context = context;
openHelper = new DaoMaster.DevOpenHelper(context, dbName, null);
} /**
* 获取单例引用
* @param context
* @return
*/
public static GreenDaoManager getInstance(Context context) {
if (mInstance == null) {
synchronized (GreenDaoManager.class) {
if (mInstance == null) {
mInstance = new GreenDaoManager(context);
}
}
}
return mInstance;
} public InstaMediaDao getInstaMediaDao() {
SQLiteDatabase writableDatabase = openHelper.getWritableDatabase();
DaoMaster daoMaster = new DaoMaster(writableDatabase);
DaoSession daoSession = daoMaster.newSession();
return daoSession.getInstaMediaDao();
}
public UserDao getUserDao() {
SQLiteDatabase writableDatabase = openHelper.getWritableDatabase();
DaoMaster daoMaster = new DaoMaster(writableDatabase);
DaoSession daoSession = daoMaster.newSession();
return daoSession.getUserDao();
} }

使用就比较简单了,调用对用实体Bean对应的Dao的方法即可。

例如,查询:

GreenDaoManager.getInstance(this).getUserDao().queryRaw(String where, String... selectionArg);

其他的增删改查就是api的熟悉问题了,基本上也和sqlite差不多,习惯就ok了。

网上其他的教程很多,也可参考。

ORM框架--GreenDao 3.0基本使用指南的更多相关文章

  1. [Android]Android端ORM框架——RapidORM(v2.0)

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/5626716.html [Android]Android端ORM ...

  2. [Android]Android端ORM框架——RapidORM(v1.0)

    以下内容为原创,欢迎转载,转载请注明 来自天天博客:http://www.cnblogs.com/tiantianbyconan/p/4748077.html  Android上主流的ORM框架有很多 ...

  3. 数据库ORM框架GreenDao

    常用的数据库: 1). Sql Server2). Access3). Oracle4). Sysbase5). MySql6). Informix7). FoxPro8). PostgreSQL9) ...

  4. Android 数据库ORM框架GreenDao学习心得及使用总结<一>

    转: http://www.it165.net/pro/html/201401/9026.html 最近在对开发项目的性能进行优化.由于项目里涉及了大量的缓存处理和数据库运用,需要对数据库进行频繁的读 ...

  5. 【转载】Android开源:数据库ORM框架GreenDao学习心得及使用总结

    转载链接:http://www.it165.net/pro/html/201401/9026.html 最近在对开发项目的性能进行优化.由于项目里涉及了大量的缓存处理和数据库运用,需要对数据库进行频繁 ...

  6. ORM框架greenDao 2 (用于了解旧版本的使用方法,目前最新版本为3.2.2,使用注释的方式来生成)

    摘要: Android中对SQLite数据库使用,是一件非常频繁的事情.现今,也有非常多的SQLite处理的开源框架,其中最著名的greenDao,它以占用资源少,处理效率高等特点,成为优秀的ORM框 ...

  7. 对象关系映射(ORM)框架GreenDao简介和基本使用

    官网上的介绍,greenDAO 是一个将对象映射到 SQLite 数据库中的轻量且快速的 ORM 解决方案. GreenDao特点 性能最大化,可能是Android平台上最快的ORM框架 易于使用的A ...

  8. Android 自定义Android ORM 框架greenDAO数据库文件的路径

    import android.content.Context; import android.content.ContextWrapper; import android.database.Datab ...

  9. .NET 开源SqlServer ORM框架 SqlSugar 3.0 API

    3.1.x ,将作为3.X系统的最后一个版本,下面将会开发 全新的功能 更新列表:https://github.com/sunkaixuan/SqlSugar/releases 优点: SqlSuga ...

随机推荐

  1. 如何在mac OS X中查看Emoji表情的含义

    使用ctrl+空格,在搜索框中搜索 TextEdit程序,其实中文是 文本编辑 程序, 运行,在菜单中选择 编辑->特殊字符 然后可以看到每个图标的说明啦

  2. [java面试]javascript中dom取值问题radio名字一样归属于同一个组,求点击的是哪一个

    题目描述: 看如下的html文件,里面定义了一些radio类型的元素,请完成parse()函数的内容,要求能够弹出对话框提示当前选中的是第几个单选框. </pre><pre code ...

  3. 如何正确的理解和解决 ORA-01843:not a valid month

    今天码代码的时候遇到了这个问题,因为oracle用的比较少,所在查询了一下. 顿时傻眼,有很多的贴子说是因为nls_date_language的问题,还要改会话级的NLS_DATE_LANGUAGE设 ...

  4. Git管理工具对比(GitBash、EGit、SourceTree)

    Git管理工具对比(GitBash.EGit.SourceTree) GitBash是采用命令行的方式对版本进行管理,功能最为灵活强大,但是由于需要手动输入希望修改的文件名,所以相对繁琐. EGit是 ...

  5. Mysql SQL Mode详解

    Mysql SQL Mode简介 MySQL服务器能够工作在不同的SQL模式下,并能针对不同的客户端以不同的方式应用这些模式.这样,应用程序就能对服务器操作进行量身定制以满足自己的需求.这类模式定义了 ...

  6. Git版本控制:Gitlab及Coding.net的使用

    http://blog.csdn.net/pipisorry/article/details/50709014 Gitlab介绍 GitLab是利用 Ruby on Rails 一个开源的版本管理系统 ...

  7. ROS_Kinetic_15 ROS使用Qt

    ROS_Kinetic_15 ROS使用Qt 在网页http://www.qt.io/download-open-source/#section-2 下载并安装Qt ~/下载$ chmod +x qt ...

  8. UNIX环境高级编程——信号之kill、raise、killpg、alarm、pause、abort、sleep、usleep、nanosleep和setitimer函数

    一.kill, raise, killpg 函数 int kill(pid_t pid, int sig); int raise(int sig); int killpg(int pgrp, int ...

  9. Android进阶(十)Android 发邮件

    最近在做的APP涉及到发邮件,总结如下: 在android里进行邮件客户端开发可以有两种方式: 在邮件客户端的设计中,可以采用两种方法. 一种是调用android系统自带的邮件服务 优点:这种方法比较 ...

  10. 什么是IOC

    什么是IOC         IOC:控制反转,控制权的转移,应用程序本身不负责对象的创建和维护,而是由外部容器负责创建和维护.        DI(依赖注入)是其一种实现方式        目的:创 ...