GreenDao保存List<String>类型数据

来源:互联网 发布:淘宝返钱的软件叫什么 编辑:程序博客网 时间:2024/06/05 08:40

但是假如在User中有一种List类型的数据也需要保存到数据库中,该如何处理呢??**

答案很简单,可以转换一下思路,遍历List数据,然后将所有的String对象都append到一个StringBuilder中,然后保存在数据库中即可。 
事实上,GreenDao已经为我们考虑到了这种情况,因此才有了 PropertyConverter 这个接口

在PropertyConverter接口中,有两个需要实现的抽象方法

//将数据库中的值,转化为实体Bean类对象(比如List<String>)P convertToEntityProperty(D databaseValue);//将实体Bean类(比如List<String>)转化为数据库中的值(比如String)D convertToDatabaseValue(P entityProperty);
  • 1
  • 2
  • 3
  • 4
  • 5

具体实现如下所示:

package com.example.extdannyjiang.greendaodemo.utils;import org.greenrobot.greendao.converter.PropertyConverter;import java.util.Arrays;import java.util.List;/** * Created by danny.jiang on 17/6/20. */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();        }    }}

具体使用

首先创建User对象,如下所示:

@Entity   //  用于标识这是一个需要Greendao帮我们生成代码的beanpublic class User {    @Id(autoincrement = true)    private Long id;    @Property(nameInDb = "user_name")    @NotNull    private String name;    @Convert(columnType = String.class, converter = StringConverter.class)    private List<String> nickNames;}

原创粉丝点击