Android greenDao的学习总结
2014-11-13 17:27
190 查看
greedDao 是在android 开发中类似J2ee中的 Hibernate的 开源框架,操作也非常类似Hibernate。 且效率极高。在使用过程中,你也将深刻体会到MVC模型的艺术所在,因为每当你要修改表的任何结构,只需要在java工程中重新修改代码,生产greenDAO操作代码,复制到android工程即可。可扩展性极强。
首先可以到 Github 开源社区下载相应的jar包和API https://github.com/greenrobot/</span><span style="color:rgb(204,0,0)
如果英文水平好大可直接到官网查阅 http://greendao-orm.com/2011/08/19/query-builder-and-lazy-loading-lists/
接着必须先创建一个java工程来完成数据库MVC结构的实现。
给Java工程导入量给jar包, freemaker.jar 和 greendao-generator.jar 看到报名应该就知道意思了。
通过这两个包,我们可以在java工程中创建出 在android工程中需要的类文件,如表模型Model结构,以及 Dao操作类 还有android数据库的创建类。
如何在java工程中写代码:
创建一个普通的java类,包含有main函数
>现在先来创建一张表:
Schema schema = new Schema(3,"com.jin.database"); //第一个参数表示的是数据库的名字,第二个参数是创建完成的数据库相关类将会存储的包名
Entity hospital = schema.addEntity("hospital"); //开始创建一张名为 hospital的表
hospital.addIdProperty().primaryKey(); //创建主键 且自增 主键默认的类型为Long
hospital.addStringProperty("name");// 加入属性 name 类型为String
hospital.addFloatProperty("rate"); //加入浮点类型的属性
hospital.addIntProperty("priority");//增加int型 以此类推 可以通过不同方法创建不同类型的的表属性
(以上代码放入main函数中执行完毕 刷新java工程 你将会看到你想要的 在android项目中可以使用到的类,将报名和类文件名复制到android工程)
生产完的代码 除了hospital 和 hospitalDao 以外还会有DaoMaster 和DaoSession 认真研读这两个类,你就知道greenDao是怎么一回事了。一般来说这些生产类不需要做很大的修改即可使用。</p><p>数据库无非就是增删改查,以下就简单复制代码介绍:
首先我是这么架构代码的,这也是官方建议的方法 在自己项目所拥有的Application类中创建如下属性 </p><p></p><pre name="code" class="java">// 数据库private static Application applicationInstance;private static DaoMaster daoMaster;private static DaoSession daoSession;private static CrashApplication mInstance;
</pre><pre code_snippet_id="517987" snippet_file_name="blog_20141113_6_8625089" name="code" class="java">/*** 取得DaoMaster** @param context* @return*/public static DaoMaster getDaoMaster(Context context) {if (daoMaster == null) {OpenHelper helper = new DaoMaster.DevOpenHelper(context,GlobleData.DB_NAME, null);daoMaster = new DaoMaster(helper.getWritableDatabase());}return daoMaster;}/*** 取得DaoSession** @param context* @return*/public static DaoSession getDaoSession(Context context) {if (daoSession == null) {if (daoMaster == null) {daoMaster = getDaoMaster(context);}daoSession = daoMaster.newSession();}return daoSession;}接下来创建一个类 用来获取相应的Dao操作public class DBDaoUtil {privatestatic ContextappContext;public DaoSessionmDaoSession;privatestatic final StringTAG = DBDaoUtil.class.getSimpleName();privatestatic DBDaoUtil instance;public DaoSession getDaoSession() {returnmDaoSession;}private DBDaoUtil() {}publicstatic DBDaoUtil getInstance(Context context) {if (instance ==null) {instance =new DBDaoUtil();if (appContext ==null) {appContext = context.getApplicationContext();}instance.mDaoSession = CrashApplication.getDaoSession(context);}returninstance;}public focus_drugstoreDao gethospitalDao(){returninstance.mDaoSession.gethospitalDao();}}以后你就可以很方便的来获取到 相应表上得Dao操作对象msgDao = DBDaoUtil.getInstance(context).getMessageDao();msgDao.loadAll(); // 可直接获取到全部的表数据库/**进行比较复杂的查询**/QueryBuilder<message> qb = msgDao.queryBuilder();qb.where(new StringCondition(" _id in (select max(_id) from message group by FROM_ACCOUNT)")).build();// qb.orderAsc(messageDao.Properties.Time);return (ArrayList<message>) qb.list();同样你也可以进行最简单的查询QueryBuilder<doctor> qb = doctorDeal.queryBuilder();qb.where(doctorDao.Properties.Phone.eq(item.getFrom_account())); //通过匹配某个值来实现final doctor doctorData = qb.list().get(0);也可以换回原来的纯SQL查询方式SQLiteDatabasedbSql = DBDaoUtil.getInstance(context).mDaoSession.getDatabase();dbSql.execSQL("UPDATE message SET is_read = 1 WHERE from_account = "+ account);其余的删除,更新就根据Model对象或者Id来执行了,比较简单就不赘述.
相关文章推荐
- android GreenDao数据库框架学习(2)
- GreenDao 3.1学习总结
- Android ORM之GreenDao学习
- Android 操作数据库的框架——greenDAO的学习
- Android 操作数据库的框架——greenDAO的学习
- SQL学习笔记之数据库专题(三):Android下Sqlite数据库ORM框架之GreenDao详解
- Android ORM 框架之 greenDAO 学习
- Android框架学习之GreenDao(二)数据库升级
- Android GreenDao使用总结(包括模型生成、增删改查、修改存储路径、数据库更新升级和加解密数据库)
- android GreenDao数据库框架学习(1)
- Android:greenDao与Parcelable使用总结
- Android画图学习总结(四)——Animation(上)
- android学习总结
- gps和android service和pseudo terminal学习总结
- Android下ContentProvider 学习总结
- 一周的总结+android平台学习的一点点体会
- Android画图学习总结(二)——Bitmap
- Android画图学习总结(四)——Animation(中)
- Android画图学习总结(四)——Animation(上)
- Android画图学习总结(二)——Bitmap