主页: https://github.com/greenrobot/greenDAO


配置: 添加以下依赖
* compile 'de.greenrobot:greendao:2.1.0'
* compile
'de.greenrobot:greendao-generator:2.1.0'


优点:
* 性能最大化,内存开销最小化
* 易于使用的API
* 为Android进行高度优化



重要类

DaoMaster:它保存了sqlitedatebase对象以及操作DAO
classes(注意:不是对象)。其提供了一些创建和删除table的静态方法,其内部类OpenHelper和DevOpenHelper实现了SQLiteOpenHelper并创建数据库的框架。

DaoSession:会话层。操作具体的DAO对象(注意:是对象),比如各种getter方法。

XXXDao:实际生成的某某DAO类,通常对应具体的java类,比如NoteDao等。其有更多的权限和方法来操作数据库元素。

XXXEntity:持久的实体对象。通常代表了一个数据库row的标准java
properties。


使用步骤

1.创建自定义的DAOGenerater,指定数据库相关配置并生成相关类

import de.greenrobot.daogenerator.DaoGenerator;
import de.greenrobot.daogenerator.Entity;
import de.greenrobot.daogenerator.Schema; /**
* Description:帮助生成操作数据的一些Java类 */ public class CustomHelper { public static void main(String[] args) throws Exception {
//第一个参数表示数据库版本号,
//如果发生变更会导致数据库更新的操作被调用(如果不修改生成的DaoMaster中的方法
//升级默认操作是删除所有表并重新建表)
//第二个参数是生成的DAO类的包路径
Schema schema = new Schema(1, "com.itheima.greendao.db"); // 创建表,参数为表名
Entity entity = schema.addEntity("Info");
// 为表添加字段
entity.addIdProperty().primaryKey().autoincrement(); //自增长id为主键
entity.addStringProperty("name").notNull();//非null字段
entity.addIntProperty("age");//Int类型字段
entity.addStringProperty("tel");// String类型字段 // 生成数据库相关类
//第二个参数指定生成文件的本次存储路径,AndroidStudio工程指定到当前工程的java路径
new DaoGenerator().generateAll(schema,
"D:\\Android\\code-as\\Aandroid56\\DataBase\\greendao\\src\\main\\java");
} }

2.在Application中通过DaoMaster.DevOpenHelper初始化数据库

// 该初始化过程最好放在Application中进行,避免创建多个Session
private void setupDatabase() {
// 通过 DaoMaster 的内部类 DevOpenHelper创建数据库
// 注意:默认的 DaoMaster.DevOpenHelper 会在数据库升级时,删除所有的表
/**
* @param context : Context
* @param name : 数据库名字
* @param factory : CursorFactroy
*/
DaoMaster.DevOpenHelper helper = new DaoMaster.DevOpenHelper(this, "student.db", null);
// 获取数据库
SQLiteDatabase database = helper.getWritableDatabase();
// 获取DaoMaster
DaoMaster daoMaster = new DaoMaster(database);
// 获取Session
DaoSession daoSession = daoMaster.newSession();
// 获取对应的表的DAO对象
InfoDao dao = daoSession.getInfoDao();}

3.获取数据库的DAO对象,即可进行增删改查的操作

        // 增
dao.insert(new Info(2l,"张三",18,"119"));
// 删
dao.deleteByKey(1L);
// 改
dao.update(new Info(3L, "赵琦", 78, "18812348888")); // 查
QueryBuilder<Info> builder = dao.queryBuilder();
List<Info> build = builder.list();
for(Info info:build){
Log.e("MainActivity",info.toString());
}

数据库开源框架之GreenDAO的更多相关文章

  1. 数据库开源框架GreenDao的使用解析

    数据库开源框架GreenDao的使用解析 1,GreenDao概述 1),greenDao是一个当下十分火热的数据库开源框架,或者说是一个帮助Android开发者将数据存到SQLite中的一个开源项目 ...

  2. Android 轻量级ORM数据库开源框架ActiveAndroid 源码分析

    ActiveAndroid 项目地址在https://github.com/pardom/ActiveAndroid 关于他的详细介绍和使用步骤 可以看下面两篇文章: https://github.c ...

  3. 数据库开源框架ormlite

    今天听说了ORM框架ORMLITE,特地去了解了一下. 该框架可以使用注解方式来生成数据库表,还封装了常用的数据库操作. 类似J2EE的HIBERNATE框架对数据库的处理. 省去了书写建表语句的麻烦 ...

  4. 数据库开源框架之litepal

    主页: [https://github.com/LitePalFramework/LitePal](https://github.com/LitePalFramework/LitePal) 中文文档地 ...

  5. 数据库开源框架之sqlcipher加密数据库

    访问github链接:https://github.com/sqlcipher/android-database-sqlcipher 访问 http://sqlcipher.net/sqlcipher ...

  6. 数据库开源框架之ormlite

    主页: http://ormlite.com/ 配置: 添加以下依赖 * compile 'com.j256.ormlite:ormlite-android:4.48' * compile 'com. ...

  7. 开源框架GreenDao的操作

    1.为什么需要GreenDao?Google原生API不方便 @1手动组拼SQL语句 @2需要自己写操作数据库代码 @3不能把数据库中的数据映射成对象 @4没有实现关联查询 2.GreenDao是什么 ...

  8. IT观察】网络通信、图片显示、数据库操作……Android程序员如何利用开源框架

    每个Android 程序员都不是Android应用开发之路上孤军奋战的一个人,GitHub上浩如烟海的开源框架或类库就是前人为我们发明的轮子,有的轮子能提高软件性能,而有的轮子似乎是以牺牲性能为代价换 ...

  9. [开源].NET数据库访问框架Chloe.ORM

    扯淡 13年毕业之际,进入第一家公司实习,接触了 EntityFramework,当时就觉得这东西太牛了,访问数据库都可以做得这么轻松.优雅!毕竟那时还年轻,没见过世面.工作之前为了拿个实习机会混个工 ...

随机推荐

  1. c++编程的字符集及其转换

    一.两种字符集 多字节字符集(MBCS):因为计算机最早是在英语国家诞生的,大多数英文信息是由英文字母.数字以及一些其它字符构成了一个128个字符的ASCII字符集.本来这对于英语国家来说够用了.但是 ...

  2. centos6下yum安装mariadb数据库的解决方法

    在centos6下Yum安装mariadb数据库时老是提示无法正常安装,看错误日志才发现,是没有mariadb release源文件在/etc/yum.repos.d/中,为此,我特意在新建文件: # ...

  3. Mysql设置主库binlog文件自动清理

    mysql主库中设置了打开binlog模式后,会在datadir目录下生成大量的日志文件,mysql默认是不会自动清理的,我们来设置下mysql自动清理binlog文件 一.打开mysql [root ...

  4. [易学易懂系列|rustlang语言|零基础|快速入门|(23)|实战1:猜数字游戏]

    [易学易懂系列|rustlang语言|零基础|快速入门|(23)|实战1:猜数字游戏] 项目实战 实战1:猜数字游戏 我们今天来来开始简单的项目实战. 第一个简单项目是猜数字游戏. 简单来说,系统给了 ...

  5. 第二章 Vue快速入门--8 v-bind指令的学习

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8&quo ...

  6. solr 数据库关联,表数据添加不进solr,一直indexing

    id没有映射,数据库表字段没有id,要把其中一字段映射为id

  7. 【算法学习笔记】RMQ问题与ST表

    \(0.\) RMQ问题 P1816 人话翻译 给定一个长度为\(n\)的数列\(a\),然后有\(m\)组询问,每次询问一个区间\([l,r]\)的最小值. 其中\(m,n\leq10^5\) \( ...

  8. 理论基础+实战控制台程序实现AutoFac注入

    [半小时大话.net依赖注入](一)理论基础+实战控制台程序实现AutoFac注入   系列目录# 第一章|理论基础+实战控制台程序实现AutoFac注入 第二章|AutoFac的常见使用套路 第三章 ...

  9. 生产问题之泛型自动推断(JDK1.7新特性)

    今天提完代码,新来同事拉下代码后,如下代码出现异常: List<TblBlockMoneyDtl> transData = new ArrayList<>(); 分析原因后发现 ...

  10. New!Devexpress WPF各版本支持VS和SQL Server版本对应图

    点击获取DevExpress v19.2.3完整版试用下载 本文主要为大家介绍DevExpress WPF各大版本支持的VS版本和支持的.Net版本图,Devexpress WPF v19.2.3日前 ...