美文网首页
GreenDao保存List和实体类类型数据

GreenDao保存List和实体类类型数据

作者: 苏墨白梦觉泪满青衫湿 | 来源:发表于2019-02-11 15:07 被阅读0次

在上一章中介绍了如何简单使用GreenDao,并创建了实体类来保存一些简单的数据。
但是假如在实体类中有一种List类型的数据也需要保存到数据库中,该如何处理呢??

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

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

//将数据库中的值,转化为实体Bean类对象(比如List<String>)
P convertToEntityProperty(D databaseValue);

//将实体Bean类(比如List<String>)转化为数据库中的值(比如String)
D convertToDatabaseValue(P entityProperty);

具体实现如下所示:

@Entity
public class User {
    @Id(autoincrement = true)//设置自增长
    private Long id;

    @Index(unique = true)//设置唯一性
    private String perNo;//人员编号

    private String name;//人员姓名

    private String sex;//人员姓名

//用到了这个Convert注解,表明它们的转换类,这样就可以转换成String保存到数据库中了
  @Convert(columnType = String.class, converter = Level_Converter.class)
    private List<JavaBean> levelReport; //实体类中list数据

 @Convert(columnType = String.class, converter = Temp_Converter.class)
    private TempReport maxTemp;//实体类套实体类

保存的List类型数据转换类

public class Level_Converter implements PropertyConverter<List<JavaBean>, String> {
    @Override
    public List<JavaBean> convertToEntityProperty(String databaseValue) {
        if (databaseValue == null) {
            return null;
        }
        // 先得获得这个,然后再typeToken.getType(),否则会异常
        TypeToken<List<JavaBean>> typeToken = new TypeToken<List<JavaBean>>(){};
        return new Gson().fromJson(databaseValue, typeToken.getType());
    }

    @Override
    public String convertToDatabaseValue(List<JavaBean> arrays) {
        if (arrays == null||arrays.size()==0) {
            return null;
        } else {
            String sb = new Gson().toJson(arrays);
            return sb;

        }
    }

保存的实体类转换类

public class Temp_Converter implements PropertyConverter<TempReport, String> {
    @Override
    public TempReport convertToEntityProperty(String databaseValue) {
        return new Gson().fromJson(databaseValue, TempReport.class);
    }

    @Override
    public String convertToDatabaseValue(TempReport entityProperty) {
        return new Gson().toJson(entityProperty);
    }
}

这里是用到的Gson解析的,用其他解析当然也是可以的,这个转换类实现的PropertyConverter接口,里面有两个方法,很好理解,String转JavaBean 和JavaBean转String。

相关文章

  • GreenDao保存List和实体类类型数据

    在上一章中介绍了如何简单使用GreenDao,并创建了实体类来保存一些简单的数据。但是假如在实体类中有一种List...

  • GreenDao建立多表之间的关联

    上一篇中介绍了如何使用GreenDao保存List和实体类嵌套类型的数据, 但是在实际开发中经常会遇到Lis...

  • GreenDao存集合

    如在实体类A中有一种List类型的数据也需要保存到数据库中,该如何处理呢??** 答案很简单,可以转换一下思路,首...

  • Jetpack---Room数据库

    Room数据库和GreenDao使用都差不多,定义的实体类都是用的注解方式。如果项目里面使用了GreenDao,没...

  • MVC特别参数传递

    1.MyBatis传递List类型参数 DAO层 XML文件 1.默认实体类型Bean(所对应数据库字...

  • 容器

    容器用来保存对象或基本类型数据 一.collection 1.list必须按插入顺序保存元素; 常用list:Ar...

  • Data truncated for column 'FACTO

    检查问题方向 数据库列类型和项目中实体类的id类型是否一致。数据库id是int类型的,项目实体类是String类型...

  • Android 使用SharePreferences保存List

    保存的基本思路是将List数据转换成json格式数据,再保存 保存List集合 解析获取List集合 注:保存Li...

  • EventBus的一些被坑的记录

    版本:3.0.0 ①接收List类型的EventBus时注意判断list实体类的类型 今天碰到一个bug。怎么想都...

  • python数据结构

    列表(list) 列表是以固定顺序保存对象的容器,列表用方括号表示,列表可以保存任意数据类型,是可变数据结构,可以...

网友评论

      本文标题:GreenDao保存List和实体类类型数据

      本文链接:https://www.haomeiwen.com/subject/gssqeqtx.html