GreenDao中一對多的處理


問題描述:

現有一個實體類 Card(證件)
  其中有屬性:id、證件名稱、姓名、卡號、備註,以及 證件的照片,其中證件的照片可能有多張(1到4張),故須要用到一對多的關係。

思路:設計兩張表,而後創建對應關係

證件類:Card
照片類:Photo數據庫

GreenDao語法:spa

@ToMany(referencedJoinProperty = "parentId")

1、定義Card類

//實體類:證件 Card
@Entity
public class Card {
    //ID主鍵自增
    @Id(autoincrement = true)
    private Long id;
    @NotNull
    private String card_name;//證件名稱
    @NotNull
    private String username;//證件人姓名
    @NotNull
    private String card_number;//卡號
    private String remark;//備註
    //cardId爲Photo類中定義的一個屬性
    @ToMany(referencedJoinProperty = "cardId")
    private List<Photo> photoList;
    
}

2、定義Photo類

//實體類Photo
@Entity
public class Photo {
    //ID主鍵自增
    @Id(autoincrement = true)
    private Long id;
    @NotNull
    private String photo_path;//證件照片路徑
    @NotNull
    private Long cardId;//設計此字段,而後在Card中引用它,以便於Card來識別它
}

3、添加數據

private void AddRecord() {
        String cardname = et_card_name.getText().toString();
        String username = et_user_name.getText().toString();
        String cardnumber = et_card_number.getText().toString();
        String remark = et_remark.getText().toString();

        Card card = new Card(cardname, username, cardnumber, remark);
        cardDao.insert(card);
        //count_photo爲圖片的總數
        //photoPathList爲圖片的絕對路徑的List集合
        for (int i = 0; i < count_photo; i++) {
            Photo photo = new Photo();
            photo.setCardId(card.getId());
            photo.setPhoto_path(photoPathList.get(i));
            photoDao.insert(photo);
        }

        Toasty.success(context,"保存完畢").show();
    }

UI界面

這裏寫圖片描述

  • 存儲完成後文件以下所示:

這裏寫圖片描述

  • 數據庫:能夠看到不一樣的Photo對應了相同的Card

一、Card表:設計

這裏寫圖片描述

二、Photo表:code

這裏寫圖片描述

相關文章
相關標籤/搜索