主页: 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,指定数据库相关配置并生成相关类

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

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

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

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

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

数据库开源框架之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. 第六章·Logstash深入-收集java日志

    1.通过Logstash收集java日志并输出到ES中 因为我们现在需要用Logstash收集tomcat日志,所以我们暂时将tomcat安装到Logstash所在机器,也就是db03:10.0.0. ...

  2. 9月24日开始发布,主打安全的Librem 5 Linux手机

    曾推出搭载PureOS Linux发行版本Librem笔记本系列的硬件厂商Purism,今天正式宣布了Librem 5 Linux手机的最终和官方发售日期.Librem 5于2017年10月正式发布, ...

  3. S19格式

    S-record格式文件是Freescale CodeWarrior编译器生成的后缀名为.S19的程序文件,是一段直接烧写进MCU的ASCII码,英文全称问Motorola format for EE ...

  4. 给移动硬盘装win10,知道这些就足够了

    随着制造工业的不断发展,储存介质逐渐廉价化,以某猫和某狗为代表的电商平台上都能轻松买到大容量的原装移动硬盘.如果工厂的产品还不能满足你的要求,那么DIY是一个不错的选择,可以选择购买移动硬盘盒(2.5 ...

  5. 【转载】Attention Mechanism in Deep Learning

    本篇随笔为转载,原文地址:知乎,深度学习中Attention Mechanism详细介绍:原理.分类及应用.参考链接:深度学习中的注意力机制. Attention是一种用于提升基于RNN(LSTM或G ...

  6. LeetCode03 - 无重复字符的最长子串(Java 实现)

    LeetCode03 - 无重复字符的最长子串(Java 实现) 来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/longest-substri ...

  7. 部署nginx脚本

    cd nginx-1.12.2useradd -s /sbin/nologin nginx./configuremakemake installyum -y install mariadb maria ...

  8. CentOS5、CentOS6启动流程

    这三篇文章讲的都很好,可以看一下 http://os.51cto.com/art/201407/446819.htm http://www.mamicode.com/info-detail-11656 ...

  9. java8新特性学习:stream与lambda

    Streams api 对 Stream 的使用就是实现一个 filter-map-reduce 过程,产生一个最终结果,或者导致一个副作用(side effect). 流的操作类型分为两种: Int ...

  10. 报表开发工具!DevExpress Reporting v19.1:WPF/Web平台报表

    行业领先的.NET界面控件DevExpress Reporting全新发布了v19.1版本,本文主要为大家介绍WPF.Web平台中DevExpress Reporting发布的一些新功能及增强部分功能 ...