2013-02-17 132 views
0

我在这里问类似的问题,但我没有得到任何满意的答复,所以请理解我的关注: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:
Best way to select row with following scenario using 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"); 
    } 

下面是我已经为我haved张贴的问题进行:

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

+1

问题没有意义。 – 2013-02-17 08:42:11

+0

@MitchWheat你能告诉我你到底明白了什么。所以我可以向你解释我的问题。 – dreamer 2013-02-17 09:06:54

回答

0

看来你现在所做的只是你的问题的答案...... 据我所知在greenDao中没有方法通过条件获取行或按条件删除单个行......只能通过条件该ID(长)...

1

你应该能够建立一个删除查询。作为GreenDao docs说:

删除查询

批量删除不删除单个的实体,而是所有实体 满足某种条件。要执行批量删除,请创建一个 QueryBuilder,调用它的buildDelete方法,并执行返回的 DeleteQuery。这部分API可能在未来发生变化,例如请注意,批量删除 当前不会影响身份范围中的实体,例如,如果它们之前已被缓存,并且由其ID(加载方法)访问 ,则可以将 “复活”删除实体。现在考虑清除身份 范围,如果这可能会导致您的用例出现问题。

+0

现在已经4年了,他们对“未来”的含义是什么? – FARID 2017-04-22 12:09:43