2013-02-17 128 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