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个方法。
时间: 2024-11-07 19:07:47

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

【Android】GreenDao操作外部DB数据库文件

1.背景 所谓外部数据库文件此处指的就是一个在外部单独创建的db文件,假设有这么一个场景,我们项目中有一些本地数据,不需要接口去获取的(不需要进行网络操作),写死的数据,比如全国各个省各个市的一些基本信息,每个市的信息可以作为表里的一条记录存放,在项目中使用,此时如何我们已经有了包含这些信息的db文件,我们就可以通过greendao来操作这个db文件,更具方便进行开发工作,当然这只是个模拟情况,至于合不合理,有没有更好的方式,此处不过多讨论,重点讲这么一种方式,这种方式可以用于一些不经常变化的数

浅谈android中的自定义封装易用的Dialog

好久没写android的博客,最近在做一个android的项目,里面用到我们经常用的一个控件就是对话框,大家都知道android自带的对话框是很丑的,android5.x之后除外.所以就出现了自定义view,自己定义美观的对话框.好我们就来自定义对话框. 整体思路:定义一个类然后去继承Dialog类,然后重写相应的构造器方法.大家都知道一般的对话框的创建过程都是来一个AlertDialog.Builder对象,然后使用一些set方法来设置标题内容以及设置一些自定义的view和点击的Button以

Retrofit – Java(Android) 的REST 接口封装类库

Retrofit 和Java领域的ORM概念类似, ORM把结构化数据转换为Java对象,而Retrofit 把REST API返回的数据转化为Java对象方便操作.同时还封装了网络代码的调用. 例如: public interface GitHubService { @GET("/users/{user}/repos") List<Repo> listRepos(@Path("user") String user); } 定义上面的一个REST API

Android Studio 导入外部lib文件

Android Studio 导入外部lib文件 1.将jar包放入Module里的lib文件夹中.(自己创建lib文件夹) 2.在project选中jar包点击右键"Add as library". 3.此时项目仍然是无法正常编译的,这时需要在项目里的module的build.gradle文件里的dependencies节加入以下内容 compile files('lib/xxxx.jar') 这里files括号里面的地址是相对于build.gradle文件的相对路径 4.此时项目正

android 调用相册-照相机封装

把这两个功能封装起来,经常使用到. private static Uri photoUri; public static final int NONE = 0; public static final int PHOTOHRAPH = 1;// 拍照 public static final int PHOTOZOOM = 2; // 缩放 public static final int PHOTORESULT = 3;// 结果 public static final String IMAGE_

android greenDao SQLite数据库操作工具类使用

上一篇介绍了如何建立类生成工程,现在介绍如何使用. 以下是ExampleDaoGenerator工程代码,做了一些修改 /* * Copyright (C) 2011 Markus Junginger, greenrobot (http://greenrobot.de) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in com

Android Toast(吐司) 简单封装

Android Toast(吐司)简单封装,且解决了Toast显示时间叠加问题. public class ToastUtil { private static Toast toast=null; public static void showToast(Context context,String content){ if(toast!=null) { toast.cancel(); } toast=Toast.makeText(context,content,Toast.LENGTH_LON

android GreenDao数据库框架学习(1)

一.GreenDao概述: greenDAO 是一个可以帮助 Android 开发者快速将 Java 对象映射到 SQLite 数据库表单中的 ORM 解决方案.greenDAO的特点运行效率最高.内存消耗最少,官网:http://greendao-orm.com/...github下载地址:https://github.com/greenrobot/greenDAO. 1.  DaoCore:greenDAO的核心库. 2.  DaoExample:greenDAO使用范例项目. 3.  Da

Android greenDao的简单配置和使用

最近自学做东西的时候用到了一个收藏的功能,然后我想把东西存放到SQLite当中,然而自己传值的时候都是用到的实体类,所以存起来也比较麻烦,所以从网上找到一个greenDao的开源框架非常火,不仅效率高,而且内存也占用的小,非常方便. 这里我就简单介绍一下如何配置,至于其他的增.删.改.查了,网上都很多,需要用到的小伙伴们自己去查吧!! 首先我们得明白,greenDao是一个Java代码模版的快速生成器,里面封装好了我们实体类的各种操作.所以 1.我们要用eclipse或者Myeclipse建一个