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