GreenDao存储list集合数据
来源:互联网 发布:网络直播节目 编辑:程序博客网 时间:2024/06/06 02:46
参考博客:
http://blog.csdn.net/zxm317122667/article/details/73528387
http://blog.csdn.net/cjm2484836553/article/details/78279493
假如在实体类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类中部分代码
@Entitypublic 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;//会员名
测试代码:https://github.com/DevelopWb/GreenDaoTest.git
阅读全文
0 0
- GreenDao存储list集合数据
- 使用GreenDao存储list集合数据
- 使用LitePal存储list集合数据
- GreenDao存集合类型数据
- GreenDao保存List<String>类型数据
- GreenDao保存List<String>类型数据
- 将数据集合list转换成json进行存储
- Android数据存储之GreenDao 3.0 详解
- Android数据存储之GreenDao 3.0 详解
- Android数据存储之GreenDao 3.0 详解
- Android数据存储之GreenDao 3.0 详解
- Android数据存储之GreenDao 3.0 详解
- Android数据存储之GreenDao 3.0 详解
- GreenDao集合
- Day5 基于greenDao的List存储与查询方法大全
- List集合数据排序
- Python ,list数据集合
- Redis存储List<T>集合
- PHP 使用 Redis
- 【OCR】源码编译安装tesseracr-ocr并简单说一下接口——Ubuntu14.04
- 搜索题型总结
- mysql 查询当天、本周,本月,上一个月的数据
- iOS控制高并发-dispatch_semaphore(信号量)的用法
- GreenDao存储list集合数据
- sql联合查询(内联、左联、右联、全联)
- CF897B——Chtholly's request(关于回文数)
- 对【内联a标签以及img标签换行出行多余空格Bug】处理
- FIRST CSDN
- 数据库设计
- 线程中修改ui,解决线程修改UI时出错
- eclipse 完全修改项目名
- java字符串截取相关方法