【问题标题】:DBFlow Transactions Overhaul - need to rewrite my codeDBFlow Transactions Overhaul - 需要重写我的代码
【发布时间】:2017-04-18 09:34:53
【问题描述】:

与新版本的 Raizlabs DBFlow 一样,管理数据库的方式已经改变。

现在,经过数小时的阅读/学习,我被逼到了墙角。我需要将旧版 DBFlow (3.0.0-beta5) 的两种方法重写为新版 (4.0.0-beta7):

public static void saveAll(Collection<? extends Model> models) {

    TransactionManager.getInstance().addTransaction(new SaveModelTransaction<>(ProcessModelInfo.withModels(models)));

}


public static void deleteAll(Collection<? extends Model> models) {

    TransactionManager.getInstance().addTransaction(new DeleteModelListTransaction<>(ProcessModelInfo.withModels(models)));

}

我看过这篇文章:https://github.com/Raizlabs/DBFlow/blob/master/usage2/Migration3Guide.md#transactions-overhaul 但我还是做不到。这是我第一次接触ORM,只是不太了解

【问题讨论】:

    标签: android sqlite orm dbflow


    【解决方案1】:

    正确答案是:

        public static void saveAll(final Collection<? extends Model> models) {
        FlowManager.getDatabase(NAME)
                .beginTransactionAsync(new ProcessModelTransaction.Builder<>(
                        new ProcessModelTransaction.ProcessModel<Model>() {
                            @Override
                            public void processModel(Model model, DatabaseWrapper wrapper) {
                                model.save();
                            }
                        }).addAll(models).build())
                .error(new Transaction.Error() {
                    @Override
                    public void onError(Transaction transaction, Throwable error) {
    
                    }
                })
                .success(new Transaction.Success() {
                    @Override
                    public void onSuccess(Transaction transaction) {
    
                    }
                }).build().execute();
    }
    

        public static void deleteAll(final Collection<? extends Model> models) {
    
        FlowManager.getDatabase(NAME)
                .beginTransactionAsync(new ProcessModelTransaction.Builder<>(
                        new ProcessModelTransaction.ProcessModel<Model>() {
                            @Override
                            public void processModel(Model model, DatabaseWrapper wrapper) {
                                model.delete();
                            }
                        }).addAll(models).build())
                .error(new Transaction.Error() {
                    @Override
                    public void onError(Transaction transaction, Throwable error) {
    
                    }
                })
                .success(new Transaction.Success() {
                    @Override
                    public void onSuccess(Transaction transaction) {
    
                    }
                }).build().execute();
    
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-08-29
      • 2012-11-27
      • 2015-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      相关资源
      最近更新 更多