GreenDao是一个帮组Android开发者简化数据库操作的一个工具
情景1:
当向数据库插入一个List的数据的时候:
例如以下的json串:examlist里面还嵌套了一个list
{
"api": "exam_listByMacid",
"data": {
"action": "INSERT",
"examList": [
{
"courseName": "语文",
"endTime": "2019-08-07 16:00:00.0",
"startTime": "2019-08-07 16:00:00.0",
"teaList": [
{
"campusid": "19600”,
"name": "李光",
},
{
"campusid": "19600”,
"name": "孟欢",
}
]
},
{
"courseName": "英语",
"endTime": "2019-08-07 12:00:00.0",
"startTime": "2019-08-07 12:00:00.0",
"teaList": [
{
"campusid": "19600”,
"name": "李光",
}
]
}
]
},
}
然后我们就需要通过@Convert(columnType = String.class, converter = Level_Converter.class)这个标签来将list存入数据
@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;//实体类套实体类
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;
}
}