Android ORM 框架:GreenDao的使用,只需看一遍就会
2016-11-04 16:29
423 查看
前言
这篇文章主要讲的是GreenDao的使用,可能初次接触到GreenDao的android开发者,对他并不熟悉,不知道这是个什么样的框架,提到这个框架,我需要提到的是android数据库开发经常会用的SQLite,相信很多人对这个并不陌生,知道它是干嘛用的,但是原生的SQLite在使用起来,并不是那么的方便,在效率上也没那么高,所以基于这一点,有很多的第三方的用于操作android数据库的框架涌现了出来,现在市面上比较优秀的主流框架有OrmLite、SugarORM、Active Android、Realm 与 GreenDAO,而今天我将选择GreenDao当主角,讲讲这个框架的特点以及如何快速的上手并用在自己的项目中。关于GreenDao
这个图片足以说明SQLite与GreenDao的关系,说白了,GreenDao 就是一个将对象映射到 SQLite 数据库中的轻量且快速的 ORM 解决方案。
GreenDao的设计目标
一个精简的库性能最大化
内存开销最小化
易于使用的 APIs
对 Android 进行高度优化
GreenDao与OrmLite的比较
[b]GreenDao的优点[/b]1、效率很高,插入和更新的速度是sqlite的2倍;
2、加载实体的速度是ormlite的4.5倍,这里是官网测试结果;
3、文件较小(<100K),占用更少的内存 ,但是需要create Dao;
4、操作实体灵活:支持get,update,delete等操作
[b]GreenDao的缺点[/b]
学习成本较高。其中使用了一个java工程根据一些属性和规则去generate一些基础代码,类似于javaBean但会有一些规则,另外还有QueryBuilder、Dao等API,所以首先要明白整个过程,才能方便使用。没有ORMLite那样封装的完整,不过greenDao的官网上也提到了这一点,正是基于generator而不是反射,才使得其效率高的多。
[b]OrmLite的优点[/b]
1、文档较全面;
2、社区活跃,有好的维护;
3、使用简单,易上手。
[b]OrmLite的缺点[/b]
基于反射,效率较低
如何使用
第一步:创建Java工程由于GreenDao的使用需要依赖一个Java工程,所以第一步先创建一个java工程,在android studio中创建的步骤看图
图一
图二
图三
到这里,一个Java工程就创建好了
第二步:在Java工程项目的build.gradle文件里面添加如下依赖:
compile 'de.greenrobot:greendao-generator:2.1.0'
第三步:编写Java工程主代码
package com.example; import de.greenrobot.daogenerator.DaoGenerator; import de.greenrobot.daogenerator.Entity; import de.greenrobot.daogenerator.Schema; public class GeneratorFortroy { public static void main(String[] args){ // 创建Schema Schema s = new Schema(1,"test.greendao.com.greendaotest.db"); // 添加实体对象 Entity user = s.addEntity("User"); // 给实体添加属性 user.addIdProperty().autoincrement();// 用户ID user.addStringProperty("name"); // 姓名 user.addStringProperty("sex"); // 性别 user.addIntProperty("height"); // 身高 user.addIntProperty("age"); // 年龄 try { // 创建Dao生成器生成所需要的对象和Dao对象,下面的参数一我就不说了,第二个参数是你要把所有的文件生成到的目标文件的文件路径,比如我这里是android项目所在的目录的java目录下 new DaoGenerator().generateAll(s,"C:\\Users\\zhangtao\\Desktop\\GreenDaoTest\\app\\src\\main\\java"); } catch (Exception e) { e.printStackTrace(); } } }
经过以上三步,一个java工程项目已经完成,接下来需要创建android工程了,相信用过android studio的开发者对这个步骤并不陌生,我这里就不在赘述了,还不太熟悉的可以点这里进去学习。
第四步:在android项目的build.gradle的文件里引入依赖库
compile 'de.greenrobot:greendao:2.1.0'
第五步:运行刚才创建好的Java工程
完成这一步,可以回头看看Android项目里面有没有一下这几个文件,如果有,表示数据库创建成功, 那么接下去就可以做数据库的增删改查测试了
第六步:数据库的增删改查测试
布局文件activity_mian.xml
<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:gravity="center_horizontal" android:orientation="vertical"> <Button android:onClick="add" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="添加" /> <Button android:onClick="query" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="查询" /> <Button android:onClick="update" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="修改" /> <Button android:onClick="delete" android:layout_width="wrap_content" android:layout_height="wrap_content" android c8fa :text="删除" /> </LinearLayout>
主代码MainActivity.java
package test.greendao.com.greendaotest; import android.database.sqlite.SQLiteDatabase; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.util.Log; import android.view.View; import java.util.List; import test.greendao.com.greendaotest.db.DaoMaster; import test.greendao.com.greendaotest.db.DaoSession; import test.greendao.com.greendaotest.db.User; import test.greendao.com.greendaotest.db.UserDao; public class MainActivity extends AppCompatActivity { private static String TAG = MainActivity.class.getName(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } /** * 添加 * @param v */ public void add(View v) { DaoSession session = getSession(); UserDao dao = session.getUserDao(); for (int i = 0; i < 10; i++){ User user = new User(); user.setName("李四"+i); user.setAge(19); user.setSex("男"); dao.insert(user); } } /** * 查询 * @param v */ public void query(View v) { DaoSession session = getSession(); UserDao dao = session.getUserDao(); List<User> users = dao.loadAll(); for (User user:users) { Log.d(TAG, "testLoadAll: "+"姓名:"+user.getName()); Log.d(TAG, "testLoadAll: "+"性别:"+user.getSex()); Log.d(TAG, "testLoadAll: "+"年龄:"+user.getAge()); } } /** * 修改 * @param v */ public void update(View v) { DaoSession session = getSession(); UserDao dao = session.getUserDao(); User user = dao.loadByRowId(1); user.setAge(34); dao.update(user); } /** * 删除 * @param v */ public void delete(View v) { DaoSession session = getSession(); UserDao dao = session.getUserDao(); User user = dao.loadByRowId(1); dao.delete(user); } /** * 获取DaoSession * @return DaoSession */ private DaoSession getSession(){ SQLiteDatabase db = new DaoMaster.DevOpenHelper(this,"user.db",null).getWritableDatabase(); DaoMaster dm = new DaoMaster(db); return dm.newSession(); } }
相关文章推荐
- Android ORM 框架:GreenDao 使用详解(基础篇)
- android高效ORM数据库框架greenDao使用
- Android ORM 框架:GreenDao 使用详解
- Android ORM 框架:GreenDao 使用详解(进阶篇)
- 【Android】ORM数据库框架之GreenDao快速入门与使用
- 开源库greenDAO在Android ORM中的使用经验
- Android数据库框架GreenDao封装使用,易理解、易扩展
- Android ORM数据库框架之-greenDao(四)
- Android GreenDao数据库框架使用
- Android数据库框架GreenDAO的使用&Demo
- Android ORM——初识greenDAO 3及使用greenDAO 3前应该掌握的一些知识点(一)
- android中ORM(对象关系映射)数据库greenDAO的使用
- 【Android - 框架】之GreenDao的使用
- Android 数据库ORM开源框架之greenDAO
- Android GreenDAO ORM的使用(一) 生成DAO和Bean
- Android ORM 框架之GreenDAO(二) 进阶
- Android之greenDao,一个orm的使用
- 【Android】ORM数据库框架之GreenDao【关联】关系操作
- greenDao实践,使用orm优秀的第三方框架
- Android操作数据库的框架-GreenDao基本使用记录