Android studio配置使用GreenDao
2015-08-29 23:15
453 查看
greendao是一个移动开发的ORM框架,类似于WEB开发的Hibernate,使开发人员专注于软件业务逻辑,减少sql代码的编写(或是直接不写),帮助开发人员完成数据库表到对象的映射,同时,你可以使用面向对象的api,完成对对象的存储,添加,删除,修改,查询,复杂条件查询等操作,节约开发人员的时间专注于真正要解决的问题。此外,还支持关系的映射,类似hibernate 中的1对1,1对多等。
greenDao的设计目标
1. 对于Android是最快速的ORM框架。
2. 容易使用的APIS
3. 针对Android高度优化
4. 最小的内存消耗
5. library的个头很小
在主module的src下,创建文件夹:java-gen,用来存放,生成的java对象和DAO接口。
在build.gradle文件中配置java-gen作为java代码的存储路径,如下所示最后一行。
4.创建一个辅助的module项目,暂且称之为项目B。在android studio中选择项目类型是,要选择为android-lirbrary。
5.在项目B中的build.gradle文件中添加如下的依赖。
6.稍等Android studio为我们下载依赖。我们需要项目B来生成所需要得java对象和Dao接口对象。
7.项目B中就一个类,具体使用方式,见下面详细的代码。
8.运行main方法,将会为我们生成Java对象,和Dao接口。代码路径为我们的主module的src/main/java-gen。
整个配置过程大概就是这样,下面说一下生成的类的作用。
9.生成的类解析:
DaoMaster:保存了sqlitedatebase对象以及操作DAO类,提供了创建和删除table的静态方法,其内部类OpenHelper和DevOpenHelper实现了SQLiteOpenHelper并创建数据库的框架。
DaoSession:存储了具体的对象的Dao操作类,
XXXDao:提供大量的方法来具体操作数据。
Android中的使用。我们可以将DaoMaster,DaoSession定义到Application中提供一个全局的对象,当我们需要操作数据库时,只需要在Activity中获取到DaoSession,并由其为我们创建具体的Dao类。
application代码如下:
Activity 中具体的使用,可以通过application获得DaoSession ,通过它得到具体的Dao操作类。代码:
通过greendao增删改查如下:
其他方法类似,针对查询有必要单独说一下,是通过构建一个QueryBuild对象实现的,传入我们的bean ,就可以完成查询结果的映射。代码:
queryBuilder还有其他的方法。感冒了,清鼻涕一直不断的滴落,只有简单的陈述一下了,它的方法就不写了,到用时再具体的看文档了。
greenDao的设计目标
1. 对于Android是最快速的ORM框架。
2. 容易使用的APIS
3. 针对Android高度优化
4. 最小的内存消耗
5. library的个头很小
Android studio 配置GreenDao
本文使用的是greendao的最新2.0 的release包,首先要在项目的主module下的build.grale文件中配置如下依赖:compile 'de.greenrobot:greendao:2.0.0'
在主module的src下,创建文件夹:java-gen,用来存放,生成的java对象和DAO接口。
在build.gradle文件中配置java-gen作为java代码的存储路径,如下所示最后一行。
java.srcDirs = ['src/main/java', 'build/generated/source/apt/${variant.dirName}', 'src/main/java-gen']
4.创建一个辅助的module项目,暂且称之为项目B。在android studio中选择项目类型是,要选择为android-lirbrary。
5.在项目B中的build.gradle文件中添加如下的依赖。
compile 'de.greenrobot:greendao-generator:2.0.0'
6.稍等Android studio为我们下载依赖。我们需要项目B来生成所需要得java对象和Dao接口对象。
7.项目B中就一个类,具体使用方式,见下面详细的代码。
public class MyDaoGenerator { public static void main(String[] args) throws Exception { Schema schema = new Schema( 4, "com.epic.traverse.bean"); // 参数1: 数据库版本号,后期为数据库增加字段时,需要增加版本号。否则会执行失败 // com.xxx.bean:自动生成的Bean对象会放到/java-gen/com/xxx/bean中 schema.setDefaultJavaPackageDao("com.epic.traverse.dao"); // DaoMaster.java、DaoSession.java、BeanDao.java会放到/java-gen/com/xxx/dao中 // 上面这两个文件夹路径都可以自定义,也可以不设置 initBean(schema); // 初始化Bean了 new DaoGenerator().generateAll(schema, "../traverse_table/app/src/main/java-gen"); // 自动创建,知名代码保存的路径,为我们第2部所设置的路径 } private static void initBean(Schema schema) { Entity msgBean = schema.addEntity("RecentMessage");//表名,类名 msgBean.setTableName("recent_msg"); // 可以对表重命名 msgBean.addIdProperty();// 主键,索引,默认为_id msgBean.addIntProperty("targetid"); msgBean.addStringProperty("userName"); msgBean.addStringProperty("nick"); msgBean.addStringProperty("avatar"); msgBean.addStringProperty("message"); msgBean.addLongProperty("time"); msgBean.addLongProperty("type"); msgBean.addIntProperty("unread"); } }
8.运行main方法,将会为我们生成Java对象,和Dao接口。代码路径为我们的主module的src/main/java-gen。
整个配置过程大概就是这样,下面说一下生成的类的作用。
9.生成的类解析:
DaoMaster:保存了sqlitedatebase对象以及操作DAO类,提供了创建和删除table的静态方法,其内部类OpenHelper和DevOpenHelper实现了SQLiteOpenHelper并创建数据库的框架。
DaoSession:存储了具体的对象的Dao操作类,
XXXDao:提供大量的方法来具体操作数据。
Android中的使用。我们可以将DaoMaster,DaoSession定义到Application中提供一个全局的对象,当我们需要操作数据库时,只需要在Activity中获取到DaoSession,并由其为我们创建具体的Dao类。
application代码如下:
public class MyApplication extends Application { protected static final String TAG = "MyApplication"; private static MyApplication mInstance; public static DaoMaster mDaoMaster;//得到DaoMaster public static DaoSession mDaoSession; /** * 获取全局Application * * @return */ public static MyApplication getInstance() { return mInstance; } @Override public void onCreate() { Log.d(TAG, "onCreate()"); mInstance = this; super.onCreate(); } public static DaoMaster getDaoMaster(Context context) { if (mDaoMaster == null) { DaoMaster.OpenHelper helper = new DaoMaster.DevOpenHelper(context, "message-db", null); mDaoMaster = new DaoMaster(helper.getWritableDatabase()); } return mDaoMaster; } public static DaoSession getDaoSession(Context context) { if (mDaoSession == null) { if (mDaoMaster == null) { mDaoMaster = getDaoMaster(context); } mDaoSession = mDaoMaster.newSession(); } return mDaoSession; } }
Activity 中具体的使用,可以通过application获得DaoSession ,通过它得到具体的Dao操作类。代码:
@AfterInject public void afterInject() { mDaosession = myApplication.getInstance().getDaoSession(getActivity()); messageDao = mDaosession.getRecentMessageDao();//得到具体的Dao操作类 }
通过greendao增删改查如下:
messageDao.insert(msg); ... messageDao.deleteAll();
其他方法类似,针对查询有必要单独说一下,是通过构建一个QueryBuild对象实现的,传入我们的bean ,就可以完成查询结果的映射。代码:
QueryBuilder<RecentMessage> query = messageDao.queryBuilder(); List<RecentMessage> lists = query.list();//查询全部数据
queryBuilder还有其他的方法。感冒了,清鼻涕一直不断的滴落,只有简单的陈述一下了,它的方法就不写了,到用时再具体的看文档了。
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- Android IPC进程间通讯机制
- Android Manifest 用法
- [转载]Activity中ConfigChanges属性的用法
- Android之获取手机上的图片和视频缩略图thumbnails
- Android之使用Http协议实现文件上传功能
- Android学习笔记(二九):嵌入浏览器
- android string.xml文件中的整型和string型代替
- i-jetty环境搭配与编译
- android之定时器AlarmManager
- android wifi 无线调试
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- android 代码实现控件之间的间距
- android FragmentPagerAdapter的“标准”配置
- Android"解决"onTouch和onClick的冲突问题
- android:installLocation简析
- android searchView的关闭事件
- SourceProvider.getJniDirectories