1. 程式人生 > >GreenDao儲存list集合資料

GreenDao儲存list集合資料

假如在實體類A中有一種List型別的資料也需要儲存到資料庫中,該如何處理呢??**

答案很簡單,可以轉換一下思路,首先考慮下如果是String型別的資料,首先遍歷List資料,然後將所有的String物件都append到一個StringBuilder中,然後儲存在資料庫中即可。
事實上,GreenDao已經為我們考慮到了這種情況,因此才有了 PropertyConverter 這個介面

在PropertyConverter介面中,有兩個需要實現的抽象方法

//將資料庫中的值,轉化為實體Bean類物件(比如List<String>)
P convertToEntityProperty(D
databaseValue); //將實體Bean類(比如List<String>)轉化為資料庫中的值(比如String) D convertToDatabaseValue(P entityProperty);

舉個例子:

public class StringConverter implements PropertyConverter<List<String>, String>{

    @Override
    public List<String> convertToEntityProperty(String databaseValue) {
        if
(databaseValue == null) { return null; } else { List<String> list = Arrays.asList(databaseValue.split(",")); return list; } } @Override public String convertToDatabaseValue(List<String> entityProperty) { if
(entityProperty==null){ return null; } else{ StringBuilder sb= new StringBuilder(); for(String link:entityProperty){ sb.append(link); sb.append(","); } return sb.toString(); } } }

如果list中含自定義的類B怎麼辦呢?

從網上看到一個很好的處理辦法: 使用json!json作為客戶端和服務端之間資料傳遞的載體,不僅能滿足我們現在的業務需求,而且我們還有gson這個解析框架來幫我們做轉換!簡直不要更簡單。
舉個例子:

package com.greendaotest1204.bean;

import com.google.gson.Gson;

import org.greenrobot.greendao.converter.PropertyConverter;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

/**
 * Author:wang_sir
 * Time:2017/12/4 11:22
 * Description:This is B_Converter
 */
public class B_Converter implements PropertyConverter<List<B>, String> {
    @Override
    public List<B> convertToEntityProperty(String databaseValue) {
        if (databaseValue == null) {
            return null;
        }
        List<String> list_str = Arrays.asList(databaseValue.split(","));
        List<B> list_transport = new ArrayList<>();
        for (String s : list_str) {
            list_transport.add(new Gson().fromJson(s, B.class));
        }
        return list_transport;
    }

    @Override
    public String convertToDatabaseValue(List<B> arrays) {
        if (arrays == null) {
            return null;
        } else {
            StringBuilder sb = new StringBuilder();
            for (B array : arrays) {
                String str = new Gson().toJson(array);
                sb.append(str);
                sb.append(",");
            }
            return sb.toString();

        }
    }
}

A類中list需要轉換

 @Convert(columnType = String.class, converter = B_Converter.class)
    private List<B> transportDescriptions;

A類中部分程式碼

@Entity
public class A {
    @Id
    private Long id;
    @Unique
    private String transportNo;//配送單號
    @Convert(columnType = String.class, converter = B_Converter.class)
    private List<B> transportDescriptions;
    @NotNull
    private String transportType;//物流型別
    private String transportPeople;//配送人
    private String transportPeopleMobile;//配送人電話
    private String transportTime;//配送時間
    private String transportInfo;//配送詳情
    private String petName;//會員名

相關推薦

GreenDao儲存list集合資料

假如在實體類A中有一種List型別的資料也需要儲存到資料庫中,該如何處理呢??** 答案很簡單,可以轉換一下思路,首先考慮下如果是String型別的資料,首先遍歷List資料,然後將所有的String物件都append到一個StringBuilder中

SpringCloud工作筆記070---SpringCloud中使用Redis儲存List型別資料

    JAVA技術交流QQ群:170933152   看看這邊封裝的redis的工具類: src\main\java\cn\gov\majorproj\scadmin\util\CacheUtils.java 注意,就是用

java list集合資料升序降序排序

1,Sting型別的List集合排序 List<String> list=new ArrayList<>();         list.add("易皇星");         list.add("阿弟");         list.add("冰球

java中,list集合資料匯出到excel表格通用工具類

1.建立CustomTag類(實體類class自定義欄位名稱註解類) package CzExcel; import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; /** * 實體

2 個 List 集合資料求並、補集操作

開發過程中,我們可能需要對 2 個 或多個 List 集合中的資料進行處理,比如多個 List 集合資料求 相同元素,多個 List 集合資料得到只屬於本身的資料,如圖示: 這裡以 2 個 List 介紹,有一些業務要求我們處理得到圖上的 3 中情況 *

利用柵格處理list集合資料,使每行顯示兩條或者多資料時候

這個是微信小程式的框架,TouchUI,做頁面查詢資料是list的物件,但是要用柵格每行顯示兩條資料 <ui-row wx:for="{{resumeCoverImg}}" wx:key="unique" class="resumeCoverImg">

JQuery中Ajax實現對Map,List集合資料的接收

jQuery中Ajax接收後臺Map、List集合資料實現過程 最近學習到jQuery實現非同步傳輸資料部分,雖然跟著視訊演練了常規json資料的接收,但個人感覺不太夠,現實應用中肯定不只是傳輸簡短以

ssm- 兩個list集合資料傳輸到jsp介面 類似for迴圈遍歷出來

後臺傳輸list集合的程式碼@RequestMapping("success.html")public ModelAndView successInfo(){List<Info> list=is.getInfoList();List<String> l

如何用android sharedpreferences儲存List集合

在Android開發過程中有時需要用到一些簡單的資料儲存。 在系統自帶的sharedpreferences中提供了一些列的資料型別,但有時候需要儲存一個List集合,系統則沒有現成的方法: 以儲存場景為例: public static String SceneLis

List集合儲存資料的結構

資料儲存的常用結構有:堆疊、佇列、陣列、連結串列。 1、堆疊 堆疊,採用該結構的集合,對元素的存取有如下的特點: 1.先進後出(即,存進去的元素,要在它後面的元素依次取出後,才能取出該元素)。 例如,子彈壓進彈夾,先壓進去的子彈在下面,後壓進去的子彈在上面,當開槍時,先彈出上面的子彈

List集合迴圈儲存物件時,導致迴圈後集閤中全部資料都是最後一條的情況

在處理資料,List集合迴圈儲存物件時,發現迴圈後集閤中全部資料都是最後一條的情況。 code: ... AlarmInfo ai = new AlarmInfo(); //建立物件 List

List集合去除重複資料 Java中List集合去除重複資料的方法

【轉自】Java中List集合去除重複資料的方法 1. 迴圈list中的所有元素然後刪除重複 public static List removeDuplicate(List list) { for ( int

JAVA找出List集合中重複次數最多的資料和次數

import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Ent

去除List集合中的重複值(四種好用的方法)(基本資料型別可用)

最近專案中需要對list集合中的重複值進行處理,大部分是採用兩種方法,一種是用遍歷list集合判斷後賦給另一個list集合,一種是用賦給set集合再返回給list集合。  但是賦給set集合後,由於set集合是無序的,原先的順序就打亂了。所以我又想著能不能用set的特性進行去重又不打亂順序

List集合根據儲存物件的屬性欄位排序實現

轉載:來自:https://blog.csdn.net/u013821825/article/details/61202287   java8之前的用法: import java.util.ArrayList; import java.util.Collections;

C#如何遍歷刪除List集合中的資料

在搜尋該問題之前我想你一定已經用過foreach遍歷並Remove的操作,突然發現報出了 集合已修改;可能無法執行列舉操作的異常。 我這裡給大家提供四種方式遍歷刪除資料: 第一種是模仿阿里巴巴Java開發手冊1.4的刪除: 新貼出手冊中的內容: 發現C#裡並沒有

List集合儲存字串和自定義物件並遍歷(for迴圈和迭代)

package list; import java.util.ArrayList; import java.util.Iterator; import java.util.List; /** * :List集合儲存字串並遍歷?(迭代器和普通for)

JDBC基礎-將資料庫資料遍歷到List集合

這裡用到了自己寫的JDBC工具類使用了配置檔案 配置檔案:pro.properties 配置檔案必須和你的class檔案放在一起才能連結資料庫 DriverPath=com.mysql.jdbc.

java 大資料比較兩個list集合的差值

有這麼個場景,每天需要定時任務插入增量資料。如果通過介面獲取的直接根據時間過濾,那麼就能直接就可以插入庫中。但有時獲取到的並不是增量資料,比如微信公眾號獲取關注者列表時,獲取到的是全量資料,這樣每天就得將全量資料與庫中進行比較,只有庫中不存在資料才進行插入。這就有了兩個list比較差值的問題。

ArrayList資料add時出現覆蓋,及arraylist最後獲取到(儲存集合中的)資料相同。

@Override public ArrayList<TaskDataPackage> getData() { System.out.println("getData()"); ArrayList<TaskDataPackage> d