码迷,mamicode.com
首页 > 移动开发 > 详细

android greendao的外部封装不太友好。

时间:2015-09-19 18:05:15      阅读:736      评论:0      收藏:0      [点我收藏+]

标签:

https://github.com/greenrobot/greenDAO

下载下官网的示例,有完整的封装版本,但自已封装是碰到很多问题。

因greenDao的Master和Session中很多方法完全是隐藏的,只属于此类。

很多信息也是隐藏的。

 

只能基于继承此两类来实现(像官网示例一样)

 

想通过公有方法来实现最基本的一个demo也碰到很多坑。

 

这是示例

     Master.DevOpenHelper dbhelp=new Master.DevOpenHelper(this,"dbname",null);
        SQLiteDatabase db=dbhelp.getWritableDatabase();
        DaoConfig dc=new DaoConfig(db,BaiduUserDao.class);
        BaiduUserDao dao=new BaiduUserDao(dc);
        BaiduUser baiduUser=new BaiduUser(null,"tel","name1","pwd","mail");
        dao.insert(baiduUser);

有两个坑 

一:

BaiduUserDao类必须设置 TABLENAME静态属性
public static final String TABLENAME = "BaiduUser";
不然会报错
java.lang.NoSuchFieldException: TABLENAME

二必须设置Properties静态内部类
public static class Properties {
public final static Property Id = new Property(0, Long.class, "id", true, "_id");
public final static Property Tel = new Property(1, String.class, "telphone", false, "Tel");
public final static Property UserName = new Property(2, String.class, "username", false, "UserName");
public final static Property Email = new Property(3, String.class, "password", false, "Email");
public final static Property PassWord = new Property(4, String.class, "email", false, "PassWord");
};
不然会报错
java.lang.ClassNotFoundException: com.mac.cdp.androidbaidusign.dao.BaiduUserDao$Properties

好在有异常信息提示,不然类内部没有限制,也没有明显的说明。
但也可以理解,限制到构造里,太浪费了,而静态方法更省字段。

……

我还是照着git上示例的测试代码,通过继承session和master来吧。

我也真是没事找事

想不按官网的路子封装几个工具类,发觉无路可走,只能按他的路子来

session 的registerDao 方法
master 的registerDaoClass 方法
都只能在子类中调用。不提供public方法,只能在子类实现中调用,或套一层public个方法。


android greendao的外部封装不太友好。

标签:

原文地址:http://www.cnblogs.com/zihunqingxin/p/4821797.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!