Android技术知识Android开发Android开发

GreenDao存集合

2019-08-18  本文已影响4人  Ad大成

如在实体类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);

数据库封装类里面这样写

 @Convert(converter = StringConverter.class,columnType = String.class)
    public List<String> imgs;

意思是添加转化器,转换器的类是StringConverter,类型columnType
都是反射机制来获取 下面需要手写StringConverter类

泛型一是实体存入的集合字段
泛型二是在数据库中字段的类型是什么
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();
        }

    }
上一篇 下一篇

猜你喜欢

热点阅读