使用 ORMLite 的 ActiveRecord

Posted

技术标签:

【中文标题】使用 ORMLite 的 ActiveRecord【英文标题】:ActiveRecord with ORMLite 【发布时间】:2012-04-28 01:06:06 【问题描述】:

我真的很喜欢主动记录的想法,我将实现以下设计: 所有具体模型都扩展了抽象模型,抽象模型具有基本的 CRUD 操作。

这是模型上的示例保存功能:

public void save()
    try 
        getDao().createOrUpdate(this);
     catch (SQLException e) 
        // TODO Auto-generated catch block
        e.printStackTrace();
    

这里是getDao():

private static Dao<Model, Integer> getDao(Context context)
    Dao<Model, Integer> result = null;

    DatabaseHelper dbHelper = new DatabaseHelper(context);
    try 
        result = dbHelper.getDao(Model.class);
     catch (SQLException e) 
        // TODO Auto-generated catch block
        e.printStackTrace();
           

    return result;

如您所见,我有 Model.class。除了将 Class 传递给 getDao 函数之外,是否还有其他选项或模式可以实现以下设计?

【问题讨论】:

【参考方案1】:

不要将getDao 方法设为静态,然后:

result = dbHelper.getDao(getClass());

编辑:

在这种情况下,您必须以某种方式告诉 getDao 方法要获取什么 dao。你可以使用类似的东西:

private static <T> Dao getDao(Context context, T object)
    try 
        return new DatabaseHelper(context).getDao(object.getClass());
     catch (SQLException e) 
        e.printStackTrace();
    
    return null;

【讨论】:

如果它不是静态的,那么我不能将它用于 getAll 函数(静态)。 好的,然后让我做一些其他的改变:)

以上是关于使用 ORMLite 的 ActiveRecord的主要内容,如果未能解决你的问题,请参考以下文章

如何在 android 中使用 ProGuard 和 OrmLite

将 PostGIS 与 ormLite 一起使用

android OrmLite 入门

[ 转]Android快速开发–使用ORMLite操作数据库

android开发--ormlite

Android菜鸟成长记12 -- ORMLite的简单使用