Greendao:插入,更新,删除语法,最佳实践



我在这里问过类似的问题,但没有得到任何满意的答复,所以请理解我的担忧:

    1. https://stackoverflow.com/questions/14846105/insert-ot-update-using-one-of-the-field-as-key-in-greendao
    2. https://stackoverflow.com/questions/14547288/best-way-to-select-row-with-following-scenario-using-greendao

我在服务器和客户端上都有一个名为"TARGET"的表
这里的服务器是MySql,客户端是Android。

我想在客户端部分使用greendao,我有多个任务要做,如下所示:

  1. 具有Employee_ID的员工将在特定日期后从服务器获取所有目标,现在在客户端部分,如果存在TARGET,则应更新它,否则插入它。这是insertOrUpdate案例
  2. 使用target_ID删除特定目标
  3. 使用TARGET_NAME获取TARGET的列表

关于问题的数据:

    TABLE : TARGET
    FIELDS: TARGET_ID
            TARGET_NAME
            EMPLOYEE_ID

在DaoExampleGenerator中使用以下代码:
使用greenDao选择具有以下场景的行的最佳方式?

    private static void addTarget(Schema schema){
        Entity target = schema.addEntity("TARGET");
        target.addStringProperty("TARGET_ID").primaryKey().autoincrement();
        target.addStringProperty("TARGET_NAME");
        target.addStringProperty("EMPLOYEE_ID");
    }

以下是我为我发布的问题所做的:

    1. tDao.insertOrReplaceInTx(tArrayList);
       where, tArrayList is ArrayList of TARGET Object.
    2. for deleting a target using TARGET_ID, i load all the targets in     
       ArrayList<TARGET> then check TARGET_ID of each TARGET object. If 
       the TARGET_ID matches then i use, **tDao.delete(t);**
    3. for this also i do the same as (2), i load all the targets then match 
       the TARGET_NAME, If it matches then i add it to list.

任何人都可以告诉我实现上述问题陈述的最佳方法吗。使用greendao

您应该能够构建一个删除查询。正如绿岛医生所说:

删除查询

批量删除不会删除单个实体,而是删除所有实体符合某些标准。要执行批量删除,请创建QueryBuilder,调用其buildDelete方法,并执行返回的DeleteQuery。API的这一部分可能在未来发生变化,例如。可以添加方便的方法等。请记住,批量删除当前不影响身份范围内的实体,例如,您可以"恢复"已删除的实体(如果它们以前已缓存)通过其ID(加载方法)访问。考虑清除身份范围,如果这可能会导致您的用例出现问题。

你现在所做的似乎是你问题的唯一答案。。。据我所知,在greenDao中没有一种方法可以按条件获取行或按条件删除单行。。。只能通过ID(长)。。。

最新更新