我真的很喜欢主动记录的想法,我要实现以下设计:
所有具体模型都扩展了抽象模型,抽象模型具有基本的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;
}

如你所见,我有模特班。除了将类传递给getdao函数之外,是否还有其他选项或模式来实现以下设计?

最佳答案

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

result = dbHelper.getDao(getClass());

编辑:
在这种情况下,您必须以某种方式告诉get dao方法要获取什么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;
}

关于android - 带有ORMLite的ActiveRecord,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10178580/

10-15 09:48