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


    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个方法。

    这两个的设计逻辑不好。
    访问同一个类,要先在master注册daoclass 再在session注册model和dal的关联。
    要分两部,应该
    放在一处会更好。


    经试,确实可以只注调用session的registerDao

    完全可以无视
    master  的registerDaoClass 方法
  • 相关阅读:
    积跬步,聚小流------关于UML类图
    深度学习 Deep Learning UFLDL 最新 Tutorial 学习笔记 1:Linear Regression
    数字语音信号处理学习笔记——语音信号的短时频域分析(2)
    PHP程序猿必须学习的第二课——站点安全问题预防
    Connection for controluser as defined in your configuration failed.
    NYOJ 76 超级台阶
    单片机小白学步系列(十) 单片机程序下载相关知识
    SQL 语言划分
    UVA 11754
    客户端远程方法声明
  • 原文地址:https://www.cnblogs.com/zihunqingxin/p/4821797.html
Copyright © 2020-2023  润新知