android面向对象数据库db40日趋成熟.这里简单写了一个demo供大家参考.

首先,定义了一个操作数据库的带泛型T的接口.这一步并不是必须的,但是有通用的好处.


package cn.welcone.mobileguarder.dao;import java.io.File;import java.util.List;import android.app.Application;import android.content.Context;import cn.welcone.mobileguarder.MyApplication;import com.db4o.Db4oEmbedded;import com.db4o.ObjectContainer;import com.db4o.ObjectSet;import com.db4o.query.Predicate;public  class BaseDb40Helper<T>  implements IDb40Helper<T>{    private   ObjectContainer objectContainer;    private   Context context;                                                                                                                                   public  String  getDB4Path(String databaseName){        return  new File(context.getExternalFilesDir(null),databaseName+".data").getPath();    }                                                                                                                                   public BaseDb40Helper( Context context,String databaseName) {        this.context = context;        objectContainer = Db4oEmbedded.openFile(Db4oEmbedded.newConfiguration(), getDB4Path(databaseName));    }    @Override    public void add(List<T> ts) {        for (T t : ts) {            objectContainer.store(t);        }    }    /**     * 采用回调的方式来查询结果     * 传入一个predicate对象,在其中书写条件即可     */    public List<T> get(Predicate<T> predicate) {        return objectContainer.query(predicate);    };     /*     * 根据查询条件进行得到一些结果集,然后对这些进行操作,最后再全部存储起来.     */    @Override    public void update(Predicate<T> predicate , UpdateOperation<T> updateOperation) {        List<T> resultSet = get(predicate);        for (T t : updateOperation.updateOPeration(resultSet)) {            objectContainer.store(t);        }    }    @Override    public void delete(Predicate<T> predicate) {        for (T t : objectContainer.query(predicate)) {            objectContainer.delete(t);        }    }                                                                                                                               }

然后,写了一个实现类

package cn.welcone.mobileguarder.dao;import java.io.File;import java.util.List;import android.app.Application;import android.content.Context;import cn.welcone.mobileguarder.MyApplication;import com.db4o.Db4oEmbedded;import com.db4o.ObjectContainer;import com.db4o.ObjectSet;import com.db4o.query.Predicate;public  class BaseDb40Helper<T>  implements IDb40Helper<T>{    private   ObjectContainer objectContainer;    private   Context context;                                                                                                                               public  String  getDB4Path(String databaseName){        return  new File(context.getExternalFilesDir(null),databaseName+".data").getPath();    }                                                                                                                               public BaseDb40Helper( Context context,String databaseName) {        this.context = context;        objectContainer = Db4oEmbedded.openFile(Db4oEmbedded.newConfiguration(), getDB4Path(databaseName));    }    @Override    public void add(List<T> ts) {        for (T t : ts) {            objectContainer.store(t);        }    }    /**     * 采用回调的方式来查询结果     * 传入一个predicate对象,在其中书写条件即可     */    public List<T> get(Predicate<T> predicate) {        return objectContainer.query(predicate);    };     /*     * 根据查询条件进行得到一些结果集,然后对这些进行操作,最后再全部存储起来.     */    @Override    public void update(Predicate<T> predicate , UpdateOperation<T> updateOperation) {        List<T> resultSet = get(predicate);        for (T t : updateOperation.updateOPeration(resultSet)) {            objectContainer.store(t);        }    }    @Override    public void delete(Predicate<T> predicate) {        for (T t : objectContainer.query(predicate)) {            objectContainer.delete(t);        }    }                                                                                                                           }


最后使用的时候,将BaseDb40Helper new出来即可.

需要注意的问题是:

1)需要下载db40支持的jar包.加到libs下面即可使用

2)domain必须是标准的javabean

参考文档在下载包doc目录下.

需要该demo的可以到我的下载中心下载.

更多相关文章

  1. Android(安卓)LiveData Transformations
  2. 修改 Android(安卓)开机 LOGO
  3. Android(安卓)XML Editor cannot process this input
  4. Android的按键处理
  5. 使用air进行移动app开发常见功能和问题(二)
  6. android webkit 打开debug调试信息
  7. android 修改系统程序图标大小
  8. Android编译问题:Only 64-bit build environments are supported
  9. Android在TextView中设置图片显示问题

随机推荐

  1. C# 8.0 正式发布:Visual Studio 2019 支持
  2. Python数据分析相关面试题!Python学习教
  3. 别把产品经理和项目经理搞混了
  4. Python入门之迭代器与生成器的区别
  5. Python基础教程:5种方法实现反转字符串
  6. Kubernetes + Knative :玩转云上弹幕部署
  7. 数据分析思维培养
  8. CENTOS7用户管理和文件权限管理
  9. 虚函数的内部实现
  10. 关于流媒体的简介及技术梳理