android bean对象,Android GreenDao 保存 JavaBean 或者List JavaBean类型数据
GreenDao
简介
数据库存储数据基本上每个APP都有用到,GreenDAO 是一个将对象映射到 SQLite 数据库中的轻量且快速的 ORM 解决方案,至于用法这里不再多少,网上有很资料,这里主要说一下,利用GreenDao保存JavaBean类型或者List类型的数据。
举个栗子
{
rating: {
max: 10,
average: 7.9,
stars: "40",
min: 0
},
genres: [
"动作",
"奇幻",
"冒险"
],
title: "海王",
casts: [
{
alt: "https://movie.douban.com/celebrity/1022614/",
avatars: {
small: "http://img1.doubanio.com/view/celebrity/s_ratio_celebrity/public/p32853.webp",
large: "http://img1.doubanio.com/view/celebrity/s_ratio_celebrity/public/p32853.webp",
medium: "http://img1.doubanio.com/view/celebrity/s_ratio_celebrity/public/p32853.webp"
},
name: "杰森·莫玛",
id: "1022614"
},
{
alt: "https://movie.douban.com/celebrity/1044702/",
avatars: {
small: "http://img3.doubanio.com/view/celebrity/s_ratio_celebrity/public/p34697.webp",
large: "http://img3.doubanio.com/view/celebrity/s_ratio_celebrity/public/p34697.webp",
medium: "http://img3.doubanio.com/view/celebrity/s_ratio_celebrity/public/p34697.webp"
},
name: "艾梅柏·希尔德",
id: "1044702"
},
{
alt: "https://movie.douban.com/celebrity/1010539/",
avatars: {
small: "http://img3.doubanio.com/view/celebrity/s_ratio_celebrity/public/p9206.webp",
large: "http://img3.doubanio.com/view/celebrity/s_ratio_celebrity/public/p9206.webp",
medium: "http://img3.doubanio.com/view/celebrity/s_ratio_celebrity/public/p9206.webp"
},
name: "威廉·达福",
id: "1010539"
}
],
collect_count: 397576,
original_title: "Aquaman",
subtype: "movie",
directors: [
{
alt: "https://movie.douban.com/celebrity/1032122/",
avatars: {
small: "http://img3.doubanio.com/view/celebrity/s_ratio_celebrity/public/p1509950363.8.webp",
large: "http://img3.doubanio.com/view/celebrity/s_ratio_celebrity/public/p1509950363.8.webp",
medium: "http://img3.doubanio.com/view/celebrity/s_ratio_celebrity/public/p1509950363.8.webp"
},
name: "温子仁",
id: "1032122"
}
],
year: "2018",
images: {
small: "http://img3.doubanio.com/view/photo/s_ratio_poster/public/p2541280047.webp",
large: "http://img3.doubanio.com/view/photo/s_ratio_poster/public/p2541280047.webp",
medium: "http://img3.doubanio.com/view/photo/s_ratio_poster/public/p2541280047.webp"
},
alt: "https://movie.douban.com/subject/3878007/",
id: "3878007"
}
上面是豆瓣电影一个电影详情的数据,一般复杂,有一些套嵌JsonObject和JsonArray,数据库存储的都是基本类型,像上面那些objec或者array类型又改如何存到数据库中,这是个问题。GreenDao为我们提了一个解决方案,就是把这些数据统一都转成String类型,存到数据库中,用的时候再转成相应的类型。
具体分析
这里分别列数两个例子,一个是JsonObject, 一个是JsonArray的。
首先第一个字段rating,电影的评分,返回的是一个JsonObject,写出它的JavaBean
package com.zs.project.bean.movie;
import java.io.Serializable;
/**
* Created by zs
* Date:2018年 01月 17日
* Time:15:20
* —————————————————————————————————————
* About: 电影评分
* —————————————————————————————————————
*/
public class MovieRating implements Serializable {
private int max;
private float average;
private int stars;
private int min;
public int getMax() {
return max;
}
public void setMax(int max) {
this.max = max;
}
public float getAverage() {
return average;
}
public void setAverage(float average) {
this.average = average;
}
public int getStars() {
return stars;
}
public void setStars(int stars) {
this.stars = stars;
}
public int getMin() {
return min;
}
public void setMin(int min) {
this.min = min;
}
@Override
public String toString() {
return "MovieRating{" +
"max=" + max +
", average=" + average +
", stars=" + stars +
", min=" + min +
'}';
}
}
然后,写它的转换类MovieRatingConvert, 这里是用到的fastJson解析的,用Gson当然也是可以的,这个转换类实现的PropertyConverter接口,里面有两个方法,很好理解,String转JavaBean 和JavaBean转String。
package com.zs.project.greendao.convert;
import com.alibaba.fastjson.JSON;
import com.zs.project.bean.movie.MovieRating;
import org.greenrobot.greendao.converter.PropertyConverter;
/**
* Created by zs
* Date:2018年 12月 10日
* Time:17:05
* —————————————————————————————————————
* About: 评分
* —————————————————————————————————————
*/
public class MovieRatingConvert implements PropertyConverter{
@Override
public MovieRating convertToEntityProperty(String databaseValue) {
return JSON.parseObject(databaseValue , MovieRating.class);
}
@Override
public String convertToDatabaseValue(MovieRating entityProperty) {
return JSON.toJSONString(entityProperty);
}
}
下面是电影的主演casts字段,返回的是一个JsonArray,同样是写它的JavaBean和转换类MovieCastsConvert
package com.zs.project.bean.movie;
import java.io.Serializable;
/**
* Created by zs
* Date:2018年 01月 17日
* Time:15:17
* —————————————————————————————————————
* About: 主演 | 导演
* —————————————————————————————————————
*/
public class MovieCasts implements Serializable{
private String alt;
private MovieImages avatars;
private String name;
private String id;
public String getAlt() {
return alt;
}
public void setAlt(String alt) {
this.alt = alt;
}
public MovieImages getAvatars() {
return avatars;
}
public void setAvatars(MovieImages avatars) {
this.avatars = avatars;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
@Override
public String toString() {
return "MovieCasts{" +
"alt='" + alt + '\'' +
", avatars=" + avatars +
", name='" + name + '\'' +
", id='" + id + '\'' +
'}';
}
}
package com.zs.project.greendao.convert;
import com.alibaba.fastjson.JSON;
import com.zs.project.bean.movie.MovieCasts;
import org.greenrobot.greendao.converter.PropertyConverter;
import java.util.List;
/**
* Created by zs
* Date:2018年 12月 10日
* Time:17:07
* —————————————————————————————————————
* About:
* —————————————————————————————————————
*/
public class MovieCastsConvert implements PropertyConverter, String>{
@Override
public List convertToEntityProperty(String databaseValue) {
return JSON.parseArray(databaseValue , MovieCasts.class);
}
@Override
public String convertToDatabaseValue(List entityProperty) {
return JSON.toJSONString(entityProperty);
}
}
这些都写完了,就是把他们都用在整个详情的Bean里面了。
@Id(autoincrement = true)
private Long id;
private String title;
@Convert(converter = MovieRatingConvert.class , columnType = String.class)
private MovieRating rating;
private String year;
@Convert(converter = MovieImagesConvert.class , columnType = String.class)
private MovieImages images;
private String alt;
private String mobile_url;
private String share_url;
private String schedule_url;
private String collect_count;
private String comments_count;
private String ratings_count;
private String original_title;
private String summary;
@Convert(converter = StringConvert.class , columnType = String.class)
private List countries;
@Convert(converter = StringConvert.class , columnType = String.class)
private List genres;
@Convert(converter = StringConvert.class , columnType = String.class)
private List aka;
@Convert(converter = MovieCastsConvert.class , columnType = String.class)
private List casts;
@Convert(converter = MovieCastsConvert.class , columnType = String.class)
private List directors;
@Convert(converter = MovieRatingConvert.class , columnType = String.class)
private MovieRating rating;
@Convert(converter = MovieCastsConvert.class , columnType = String.class)
private List casts;
用到了这个Convert注解,表明它们的转换类,这样就可以转换成String保存到数据库中了
android bean对象,Android GreenDao 保存 JavaBean 或者List JavaBean类型数据相关推荐
- android drawable 对象,Android Drawable开发简介
Drawable 是"可绘制的东西"的抽象类,被定义在 android.graphics.drawable 包下. Drawable 类继承了很多代表不同形状的子类,例如 Bitm ...
- android bundle 对象,Android Bundle传递对象
首先Android的Bundle是可以传递对象的.我们可以用Bundle b = new Bundle():b.putSerializable("key", 对象引用); 但是这样 ...
- java对象转json字符串日期格式_fastJSON字符串类型数据中的日期转换为Java bean的日期对象...
fastJSON字符串类型数据中的日期转换为Java bean的日期对象 Person.java import java.io.Serializable; import java.util.Date; ...
- android bitmap对象,android 创建bitmap的多种方式
–Bitmap代表这一张位图,BitmapDrawable里封装的图片就是一个Bitmap对象.如果要将Bitmap对象封装成BitmapDrawable对象只需要用构造方法即可. //讲bitmap ...
- android 判断对象,Android网络判断知识小结
Android中判断当前网络是否可用 应用场景:实现判断当前网络是否可用 当前有可用网络,如下图: 当前没有可用网络,如下图: 实现步骤: 1.获取ConnectivityManager对象 Cont ...
- android parcelable 对象,Android实现Parcelable对象序列化的实例
Android实现Parcelable对象序列化的实例 bundle.putParcelable可以实现传递对象,但是这个对象的类必须实现Parcelable接口才能够使用. 下面是一个简单的在Act ...
- android 保存对象,使用sharedpreferences在Android存储对象 -解道Jdon
使用SharedPreferences在Android存储对象 为什么不用SQLite? 原因多种:除了面向对象和关系数据库之间的阻抗不匹配时,SQLite可能是矫枉过正(带来了更多的开销)对于一些简 ...
- 《Android 开源库》 GreenDAO 用法详解(译文)
简介 greenDAO是一个开源的Android ORM,使SQLite数据库的开发再次变得有趣. 它减轻了开发人员处理底层的数据库需求,同时节省开发时间. SQLite是一个很不错的关系型数据库. ...
- Android ORM 框架之 greenDAO 使用心得
前言 我相信,在平时的开发过程中,大家一定会或多或少地接触到 SQLite.然而在使用它时,我们往往需要做许多额外的工作,像编写 SQL 语句与解析查询结果等.所以,适用于 Android 的ORM ...
最新文章
- 网站SEO优化值得收藏的技巧介绍
- jQuery技术内幕电子版4
- Understand one Simple Factory Pattern
- u盘安装Fedora18
- python dropna失败_使用Python部署机器学习模型的10个实践经验
- 高嘌呤食物搜索引擎_“高嘌呤”的食物已发现,尿酸高的人,要尽量挑着吃!...
- Leetcode--210.课程表Ⅱ
- 软件开发丨关于软件重构的灵魂四问
- sqlserver中的dateadd和datediff
- 计算机组成原理—高速缓冲存储器
- fastjson SerializerFeature
- 大话数据结构PDF/word
- 系统设计=基于表面肌电信号的不同手势识别【MATLAB】
- mocano editor中使用代码比对功能
- WebUI自动化测试框架搭建从0到1(完整源码)更新完毕
- 电脑硬盘损坏如何修复?自己动手就能解决
- 从Transformer、BERT到GPT2和XLNet:高端玩家如何用论文互怼
- oracle18c静默安装教程,CentOS7无图形化界面静默安装oracle18c
- 中年男人,你如何自我救赎
- 就是要弄懂你之—— 同步 异步 阻塞 非阻塞
热门文章
- 关于pwd的含义及用法
- 高通临时首席财务官戴夫·怀斯宣布退休;东芝着手开始研究5bit PLC闪存颗粒;激烈争夺,腾讯SaaS加速器首期成员公布……...
- CSS:CSS层叠样式表的概述
- Cisco Packet Tracer 思科中交换机端口安全配置与风暴控制
- 自动化测试平台(二):开发用户认证接口
- python取矩阵的某一行_Pythonnumpy提取矩阵的某一行或某一列的实例
- [笔试] 查找兄弟单词(2012/5/6 百度实习笔试题)
- LINQ To SQL與Transaction
- 各位老铁接住啦!UB又双叒叕来搞事情
- 公众号点击图片变成另一张_公众号互动内容:小众潮流or下一个风口?