数据库开源框架之GreenDAO
主页: 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的更多相关文章
- 数据库开源框架GreenDao的使用解析
数据库开源框架GreenDao的使用解析 1,GreenDao概述 1),greenDao是一个当下十分火热的数据库开源框架,或者说是一个帮助Android开发者将数据存到SQLite中的一个开源项目 ...
- Android 轻量级ORM数据库开源框架ActiveAndroid 源码分析
ActiveAndroid 项目地址在https://github.com/pardom/ActiveAndroid 关于他的详细介绍和使用步骤 可以看下面两篇文章: https://github.c ...
- 数据库开源框架ormlite
今天听说了ORM框架ORMLITE,特地去了解了一下. 该框架可以使用注解方式来生成数据库表,还封装了常用的数据库操作. 类似J2EE的HIBERNATE框架对数据库的处理. 省去了书写建表语句的麻烦 ...
- 数据库开源框架之litepal
主页: [https://github.com/LitePalFramework/LitePal](https://github.com/LitePalFramework/LitePal) 中文文档地 ...
- 数据库开源框架之sqlcipher加密数据库
访问github链接:https://github.com/sqlcipher/android-database-sqlcipher 访问 http://sqlcipher.net/sqlcipher ...
- 数据库开源框架之ormlite
主页: http://ormlite.com/ 配置: 添加以下依赖 * compile 'com.j256.ormlite:ormlite-android:4.48' * compile 'com. ...
- 开源框架GreenDao的操作
1.为什么需要GreenDao?Google原生API不方便 @1手动组拼SQL语句 @2需要自己写操作数据库代码 @3不能把数据库中的数据映射成对象 @4没有实现关联查询 2.GreenDao是什么 ...
- IT观察】网络通信、图片显示、数据库操作……Android程序员如何利用开源框架
每个Android 程序员都不是Android应用开发之路上孤军奋战的一个人,GitHub上浩如烟海的开源框架或类库就是前人为我们发明的轮子,有的轮子能提高软件性能,而有的轮子似乎是以牺牲性能为代价换 ...
- [开源].NET数据库访问框架Chloe.ORM
扯淡 13年毕业之际,进入第一家公司实习,接触了 EntityFramework,当时就觉得这东西太牛了,访问数据库都可以做得这么轻松.优雅!毕竟那时还年轻,没见过世面.工作之前为了拿个实习机会混个工 ...
随机推荐
- loadrunner执行场景时报Error -27040: Data Format Extension: Init: Internal error问题解决
[问题描述] 在loadrunner控制台执行场景时,所有用户均Failed,查看errors,错误原因如下: Error -27040: Data Format Extension: Init: I ...
- 离线下载pytorch安装包
1. 选择合适的安装包下载 https://anaconda.org/pytorch/repo?type=conda&label=main 2. 安装命令: conda install 安装包 ...
- nginx的反向代理的优势,特点于原理(一)
说到反向代理,首先先说一下反向代理的概念 反向代理(Reverse Proxy)方式是指以代理服务器来接受客户端的连接请求,然后将请求转发给网络上的web服务器(可能是apache,nginx,tom ...
- RHEL6使用系统自带多路径软件配置多路径
1.多路径的主要功能 多路径一般配合存储设备实现如下功能: 故障的切换和恢复 IO流量的负载均衡 磁盘的虚拟化 2.查看系统自带的多路径软件是否安装 [root@cluster01 ~]# ...
- 使用 Eclipse 构建的时候会出现 run as 中没有 maven package 选项
注:该方法来自我学习时别人分享的出现问题的解决方法,并没有亲自测试,仅供参考 是因为建的是普通 java 工程,需要把它转换成 maven project. 1.右键工程--maven--Disabl ...
- 热门前沿知识相关面试问题-android插件化面试问题讲解
插件化由来: 65536/64K[技术层面上]随着代码越来越大,业务逻辑越来繁杂,所以很容易达到一个65536的天花板,其65536指的是整个项目中的方法总数如果达到这个数量时则不无法创建新的方法了, ...
- C# class 浅拷贝 与 深拷贝
MemberwiseClone 方法创建一个浅表副本,具体来说就是创建一个新对象,然后将当前对象的非静态字段复制到该新对象.如果字段是值类型的,则对该字段执行逐位复制.如果字段是引用类型,则复制引用但 ...
- layui分页的使用心得
// 执行页面加载的函数 loadData(1) // 每页条数 var limit = 5; // 渲染页面 function loadData(curr){ $.ajax({ type:" ...
- SSM框架中使用日志框架
在 pom,xml 配置 Log4j jar 添加一个 mybatis_log.xml 文件 完整配置信息 <?xml version="1.0" encoding=&quo ...
- Hadoop-No.8之时间戳
要获得良好的HBase的模式设计,要正确的理解和使用时间错.在HBase中,时间戳的作用如下所述. 时间戳决定了在put请求修改记录时那些记录更新 时间戳决定了一条记录的多个版本在返回时的排序 时间戳 ...