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

android greendao的外部封装不太友好。的更多相关文章

  1. Android GreenDao操作外部DB数据库文件

    1.背景 所谓外部数据库文件此处指的就是一个在外部单独创建的db文件,假设有这么一个场景,我们项目中有一些本地数据,不需要接口去获取的(不需要进行网络操作),写死的数据,比如全国各个省各个市的一些基本 ...

  2. Android Studio 导入外部lib文件

    Android Studio 导入外部lib文件   1.将jar包放入Module里的lib文件夹中.(自己创建lib文件夹) 2.在project选中jar包点击右键"Add as li ...

  3. [Android] Android GreenDao 保存 JavaBean 或者List <JavaBean>类型数据

    Android GreenDao 保存 JavaBean 或者List <JavaBean>类型数据 简介 数据库存储数据基本上每个APP都有用到,GreenDAO 是一个将对象映射到 S ...

  4. Android所有Demo资源汇总,太全了(申明:来源于网络)

    Android所有Demo资源汇总,太全了(申明:来源于网络) 地址:http://bbs.csdn.net/topics/391928947

  5. android studio 调试技巧(简直太好用)

    android studio 调试技巧(简直太好用) 说到android studio的调试,很多人可能会说,这有什么可讲的不就是一个断点调试么,刚开始我也是这么认为的,直到我了解之后,才发现,调试原 ...

  6. Android greenDao的简单配置和使用

    最近自学做东西的时候用到了一个收藏的功能,然后我想把东西存放到SQLite当中,然而自己传值的时候都是用到的实体类,所以存起来也比较麻烦,所以从网上找到一个greenDao的开源框架非常火,不仅效率高 ...

  7. Android GreenDao使用教程

    1.在build.gradle里添加相关依赖 apply plugin: 'org.greenrobot.greendao' buildscript { repositories { mavenCen ...

  8. Android GreenDao 在组件化项目中的一个问题 - 2018年7月5日21:15:14

    组件化项目使用GreenDao时注意的事项: 1.要在组件化中的基础库(domain层)创建实体类: 2.如果sycn之后不能生产Dao文件,使用 Android Studio 的Gradle插件重新 ...

  9. 【Android】把外部文件拷贝的AVD安卓模拟器上的sdcard上,而且在AVD中浏览sdcard的文件

    首先.实现这一切的大前提是.你的AVD安卓模拟器,在启动之前.有设置好sdcard的大小,例如以下图.同一时候,你的AVD安卓模拟器,要处于启动状态.否则无法运行例如以下的操作. 这里以<[An ...

随机推荐

  1. Linux--shell 计算时间差

    参考:https://www.cnblogs.com/leixingzhi7/p/6281675.html starttime=`date +'%Y-%m-%d %H:%M:%S'` #执行程序 en ...

  2. Red Hat、Fedora和Ubuntu软件包操作

    五.Red Hat.Fedora和Ubuntu软件包操作对比 最后总结: 在 /etc/yum.conf 的 [main] 后面添加以下配置即可! 复制代码 代码如下: exclude=kernel* ...

  3. Python笔记_第四篇_高阶编程_正则表达式_3.正则表达式深入

    1. re.split 正则的字符串切割 str1 = "Thomas is a good man" print(re.split(r" +",str1)) # ...

  4. os发展史

    01. 操作系统的发展历史 1.1 Unix 1965 年之前的时候,电脑并不像现在一样普遍,它可不是一般人能碰的起的,除非是军事或者学院的研究机构,而且当时大型主机至多能提供30台终端(30个键盘. ...

  5. 操作实践,IDEA自定义toString()方法模板

    声明:迁移自本人CSDN博客https://blog.csdn.net/u013365635 Java POJO在日志中常会用于打印,经常会将POJO的内容全部或部分打印出来,所以POJO类的toSt ...

  6. 提高WiFi上网速度

    https://jingyan.baidu.com/article/1876c852aa668c890b1376c4.html http://www.coozhi.com/youxishuma/you ...

  7. flutter依赖某些插件,点击运行会出现错误

    org.gradle.jvmargs=-Xmx1536M android.useAndroidX=true android.enableJetifier=true android.enableAapt ...

  8. UML-领域模型-添加关联和属性

    1.何谓关联? 关联(association):一个类的全局变量引用了另一个类,就表示关联了这个类 2.何时使用关联? 长时间(需要记住)留存的需要关联:短时间的不需要.比如: 需要关联:老师教那些课 ...

  9. 用Matplotlib画三维图片的一个实例

    from mpl_toolkits.mplot3d import Axes3D import matplotlib.pyplot as plt import numpy as np from matp ...

  10. Java之同步代码块处理实现Runnable的线程安全问题

    /** * 例子:创建三个窗口卖票,总票数为100张.使用实现Runnable接口的方式 * * 1.问题:卖票过程中,出现了重票.错票 -->出现了线程的安全问题 * 2.问题出现的原因:当某 ...