GreenDao存集合类型数据、List<String> 、List<Integer>

使用GreenDao存储list集合数据 【转载请注明出处:From李诗雨---】 不诗意的女程序猿不是好厨师~ 具体步骤: 1.GreenDao的配置  在Project的build.gradle文件中 buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tool 阅读详情

此文章是基于已经成功导入GreenDao了,但是GreenDao存集合类型的数据需要多几步的操作,至于怎么导入,这个自己上网查了,这篇就不赘述了(或者以后可能会补上,等我忘了怎么用把。。。)

 

第一步,导入Gson第三方。

 

第二步,新建类InterConverter , StringConverter 类,代码如下\

public class InterConverter implements PropertyConverter<List<Integer>, String> {
 
    private final Gson mGson;
 
    public InterConverter() {
        mGson = new Gson();
    }
 
    @Override
    public List<Integer> convertToEntityProperty(String databaseValue) {
        Type type = new TypeToken<ArrayList<Integer>>() {
        }.getType();
        ArrayList<Integer> list = mGson.fromJson(databaseValue , type);
        return list;
    }
 
    @Override
    public String convertToDatabaseValue(List<Integer> entityProperty) {
        String dbString = mGson.toJson(entityProperty);
        return dbString;
    }
 
 
}
 
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();
        }
    }
}

第三步,在最开始的编译生成的DaoMaster DaoSession 的那个类,下面添加新的元素进去 然后再重新Sync Project

with Gradle Files     

@Convert 是添加集合需要的

核心代码如下:

@Convert(columnType = String.class, converter = StringConverter.class)
    private List<String> nickname;
 
    @Convert(columnType = String.class, converter = InterConverter.class)
    private List<Integer> hahaha;

我编译之后的OBDL类最终代码如下:

@Entity
public class OBDL {
 
    @Id
    private Long id;
 
    @Property
    @NotNull
    private String name;
 
    @Convert(columnType = String.class, converter = StringConverter.class)
    private List<String> nickname;
 
    @Convert(columnType = String.class, converter = InterConverter.class)
    private List<Integer> hahaha;
 
 
    @Generated(hash = 1316419519)
    public OBDL(Long id, @NotNull String name, List<String> nickname,
            List<Integer> hahaha) {
        this.id = id;
        this.name = name;
        this.nickname = nickname;
        this.hahaha = hahaha;
    }
 
    @Generated(hash = 1700707547)
    public OBDL() {
    }
 
    public Long getId() {
        return this.id;
    }
 
    public void setId(Long id) {
        this.id = id;
    }
 
    public String getName() {
        return this.name;
    }
 
    public void setName(String name) {
        this.name = name;
    }
 
    public List<String> getNickname() {
        return this.nickname;
    }
 
    public void setNickname(List<String> nickname) {
        this.nickname = nickname;
    }
 
    public List<Integer> getHahaha() {
        return this.hahaha;
    }
 
    public void setHahaha(List<Integer> hahaha) {
        this.hahaha = hahaha;
    }
 
 
 
}

 

之后单例的类没有其他变化

 

具体调用如下:

public class MainActivity extends AppCompatActivity {
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
 
        DBTool.getOutInstance().deleteAll();
 
        List<Integer> data = new ArrayList<>();
        for (int i = 0; i < 10; i++) {
            data.add(i);
        }
 
        OBDL obdl = new OBDL();
        obdl.setName("qwe");
        obdl.setHahaha(data);
        DBTool.getOutInstance().insertBean(obdl);
 
        for (Integer qwe : DBTool.getOutInstance().getQueryKey("qwe").getHahaha()) {
            LogUtil.chunyLog().d(qwe);
        }
 
//        List<String> data = new ArrayList<>();
//        for (int i = 0; i < 10; i++) {
//            data.add(i + "asd");
//        }
//
//        OBDL obdl = new OBDL();
//        obdl.setName("qwe");
//        obdl.setNickname(data);
//        DBTool.getOutInstance().insertBean(obdl);
//
//
//        for (String qwe : DBTool.getOutInstance().getQueryKey("qwe").getNickname()) {
//            LogUtil.chunyLog().d(qwe);
//        }
 
 
    }
}

存int 集合和 String 集合都写了(String集合就是注释掉的那一块)

OK  收工

Android LitePal数据库框架的快速上手与配置 本文详细介绍了Android LitePal数据库框架的快速上手与配置方法。LitePal作为轻量级ORM框架,通过零配置自动化、无痛版本升级和链式API设计,极大简化了Android数据库开发流程。文章涵盖从Gradle依赖配置到高级CRUD操作的全方位指南,帮助开发者快速掌握这一高效工具。 阅读详情

相关推荐

Android开发入门:Litepal ORM框架从零到精通的保姆级教程

在Android应用开发中,本地数据存储是核心需求之一,而SQLite作为轻量级嵌入式数据库,因其无需服务器、零配置和跨平台特性,成为移动端数据持久化的首选方案。其原理是通过结构化查询语言(SQL)进行数据操作,但原生API涉及大量样板代码和手动SQL拼接,容易出错且维护困难。ORM(对象关系映射)技术应运而生,它将数据库表映射为程序中的对象,让开发者能以面向对象的方式操作数据,极大提升了开发效率和代码可读性。Litepal作为一款专为Android设计的开源ORM框架,以其极简的配置、直观的API和全面的

weixin_30947043的博客 432

android greenDao3.2.2存储数据

android使用greenDao3.2.2存储数据 1、greenDao的源码和地址 官网地址:http://greenrobot.org/greendao/ github:https://github.com/greenrobot/greenDAO 参考介绍:https://www.cnblogs.co...

漠天的博客 1106

Android记账APP开发实战:从MVP架构到图表统计的完整实现

在移动应用开发中,数据持久化与UI交互是核心基础。SQLite作为Android内置的关系型数据库,通过封装CRUD操作实现本地数据存储,其表结构设计与查询优化直接影响应用性能。结合MVP架构模式,能够清晰分离数据层、业务逻辑层与视图层,提升代码可维护性与可测试性。这些技术为工具类应用开发提供了稳定框架,尤其在个人财务管理场景中,通过RecyclerView高效展示数据列表,并借助MPAndroidChart等图表库实现消费趋势可视化,让用户直观掌握收支状况。本文以记账APP为例,详解从数据库设计到图表集成

weixin_28691741的博客 219

GreenDao3.2.2保存List<String>类型数据

在Android框架之GreenDao3.2.2的使用中,介绍了如何简单使用GreenDao,并创建了User类来保存一些简单的数据。  但是假如在User中有一种List类型的数据也需要保存到数据库中,该如何处理呢?   答案很简单,可以转换一下思路,遍历List数据,然后将所有的String对象都append到一个StringBuilder中,然后保存在数据库中即可。  事实上,Gree...

android开发笔记 2847

Android服药提醒App开发全解析:从SQLite数据库到AlarmManager精准提醒

在移动应用开发领域,本地数据存储与后台任务调度是构建可靠工具类App的核心技术。SQLite作为Android平台内置的轻量级关系型数据库,以其零配置、无需网络、单文件存储的特性,成为存储结构化用户数据(如药品信息、提醒计划)的理想选择。其通过表关系设计与事务机制,能有效保障数据的一致性与完整性,为应用提供稳定的“记忆中枢”。而AlarmManager则是实现精准定时任务的关键系统服务,它允许开发者在系统级别设置跨应用生命周期的定时器,尤其适用于服药提醒、日程通知等对时效性要求严格的场景。通过结合Broad

weixin_30613727的博客 452

Android原生记账APP源码:SQLite+Room+MVVM实战

记账APP是移动开发中典型的本地数据管理应用,其核心在于稳定的数据存储、清晰的业务分层与可控的隐私设计。基于Android原生技术栈,采用Room持久化库替代传统SQLite直调,通过编译期SQL校验提升健壮性;结合Activity-ViewModel-Repository-Database四层架构,实现逻辑解耦与可维护性。技术价值体现在毫秒级账单响应、AES-256字段级加密、MaterialDatePicker精准日期处理及MPAndroidChart实时图表绑定。广泛应用于个人财务跟踪、小微商户流水管

weixin_28285943的博客 248

GreenDao存集合类型数据

此文章是基于已经成功导入GreenDao了,但是GreenDao存集合类型的数据需要多几步的操作,至于怎么导入,这个自己上网查了,这篇就不赘述了(或者以后可能会补上,等我忘了怎么用把。。。) 第一步,导入Gson第三方。 第二步,新建类InterConverter , StringConverter 类,代码如下 public class InterConverter imp

迷途可达C的博客 4990

LitePal和GreenDao存储list集合源码

数据库存储,使用第三方的LitePal对List集合数据进行存储,使用GreenDao对List集合数据进行存储

Android ORM框架对比:LiteOrm、Room与GreenDAO实战指南

ORM(对象关系映射)技术通过将数据库表映射为编程语言中的对象,极大简化了数据持久化操作。其核心原理是利用反射或代码生成,自动处理SQL语句生成和结果集转换,显著提升开发效率并降低出错概率。在Android开发中,SQLite作为内置数据库,配合ORM框架可以解决原生API的模板代码问题。主流方案如轻量级LiteOrm适合基础CRUD场景,官方推荐的Room提供LiveData集成和编译时校验,而GreenDAO则以高性能著称。根据实测数据,10万次批量插入性能差异可达50%,选型时需权衡开发效率、维护成本

chuange6363的博客 461

GreenDaoDemo

GreenDao的详细实用案例,包含List<String>类型的保存,已经多表之间的关联

Win11安装Office2021

windows11安装office2021。

1万+

数据库增加表与更新字段语法 GREENDAO

if (newVersion > oldVersion) { String sql = "CREATE TABLE NODE_RICH_AND_INFO(CONTENT TEXT,ANSWER_START_TIME VARCHAR(12),END_TIME TIME,START_TIME TIME,ANSWER_SHOW BOOLEAN,ANSWER_SHOW_ST

ghsy121的博客 4780

CMMI AIM 人工智能成熟度框架:31个过程域的157项AI实践集成

CMMI AIM人工智能成熟度框架为企业提供了系统化管理AI项目全生命周期的解决方案,包含31个过程域的157项AI实践。该框架通过四个演进阶段(混沌与风险、结构与凝聚、验证与信任、价值与增长),帮助组织建立可持续的AI能力成长路径,降低项目失败率并提升商业价值。

weixin_42613501的博客 347

Android ORM框架选型指南:五大热门框架深度评测

ORM(对象关系映射)技术通过将数据库操作抽象为面向对象的方式,显著提升开发效率。在Android生态中,GreenDAO、Room等主流框架各有特点,性能优化和API设计是关键考量因素。GreenDAO采用代码生成技术实现极致性能,适合高频写入场景;Room作为官方解决方案,与LiveData深度集成;Realm则突破SQLite限制,支持跨平台数据同步。开发者需要根据项目规模、团队技术栈等要素,在性能、易用性和功能完整性之间找到平衡点。本文通过基准测试和典型场景分析,提供ORM选型的决策框架和实践建议。

z466459262的专栏 390

Python地理数据处理 十七:植被物候提取和分析(Savitzky-Golay)

植被是陆地生态系统中最重要的组分之一,也是对气候变化最敏感的组分,其在全球变化过程中起着重要作用,能够指示自然环境中的大气、水、土壤等成分的变化,其年际和季节性变化可以作为地球气候变化的重要指标。此外,由于生态工程保护建设和植被自然生长等因素,中国陆地生态系统发挥了重要的碳汇作用。因此,定量评估植被时空动态变化是制定生态系统可持续发展目标和衡量生态系统固碳潜力的重要前提,卫星遥感数据衍生的生态参量产品为研究长时间序列全球及区域植被时空变化提供了重要数据源。SG滤波能够对物候信息进行平滑,并提取其中的物候信息

amyniez的博客,欢迎交流讨论 4246

2023年高教社杯全国大学生数学建模竞赛 E 题:《黄河水沙监测数据分析》真题解析与 MATLAB 解决方案

🏆 本文已收录于专栏:《滚雪球学数学建模(含历年真题)》,持续更新最新及历年数学建模竞赛资料,每篇内容力求做到“问题讲透、模型讲清、代码可用、论文可参考”,帮助你从零开始逐步建立完整的数学建模知识体系。

**My Coding Family** 903

Android ORM框架选型与性能优化实战

ORM(对象关系映射)作为数据持久化的关键技术,通过将数据库操作抽象为对象方法,显著提升开发效率。其核心原理是通过注解或配置建立类与表的映射关系,自动生成SQL语句。在Android开发中,ORM框架能有效解决原生SQLite API的繁琐问题,特别适合需要快速迭代的移动应用。主流方案如Room、GreenDAO和LiteOrm各有侧重,Room提供编译时SQL检查确保安全性,GreenDAO擅长处理复杂对象关系,LiteOrm则以轻量级和高性能见长。实际选型需结合项目规模、团队技术栈和数据复杂度,例如电商

weixin_30628801的博客 310

华为OD机试真题 新系统【查找能被整除的最大整数】

华为OD新系统机试真题【查找能被整除的最大整数】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【查找能被整除的最大整数】

qq_45776114的博客 671

Android ORM框架选型与性能优化指南

对象关系映射(ORM)技术通过将面向对象编程与关系型数据库桥接,极大简化了数据持久化开发。其核心原理是将数据库表映射为编程语言中的对象,自动处理CRUD操作和关系维护。在移动开发领域,优秀的ORM框架能显著提升开发效率并保证性能,特别是在处理SQLite数据库时。Android平台上有多种ORM解决方案,包括轻量级的LiteOrm、高性能的GreenDAO、官方推荐的Room以及跨平台的Realm等。开发者需要根据项目规模、性能要求和团队技术栈等因素进行技术选型,同时要注意数据库升级、多线程处理和查询优化等

weixin_34387468的博客 400

第一章:Profibus DP通信简介

PROFIBUS (Process Fieldbus)的缩写,是一种国际化的、开放的、不依赖于设备生产商的现场总线标准。它广泛应用于制造业自动化、流程工业自动化和楼宇、交通、电力等其他工业自动化领域。串行现场总线主要用来连接数字现场设备或中、低功能的系统,如传感器、执行机构、变送器、可编程序控制器(PLC)、数控装置(NC)、编程设备、本地人机接口等。

qq_22560021的博客 4892

HTML满屏跳动的爱心(完整代码)

HTML语言实现满屏跳动爱心的完整代码。

AIGC 12万+

Android ORM框架对比与实战优化指南

对象关系映射(ORM)作为数据库编程的重要技术,通过将数据库表映射为编程语言对象,显著提升开发效率。其核心原理是利用反射或代码生成技术自动处理SQL转换,解决了原生SQLite API需要大量模板代码的问题。在Android开发中,ORM框架能降低30%-50%的数据库相关代码量,特别适合快速迭代的移动应用场景。主流方案如LiteOrm以轻量见长,Room提供官方支持,GreenDAO则以性能著称。通过合理使用事务、批量操作等优化手段,配合MVVM架构中的Repository模式,可以构建高性能的数据持久层

weixin_34342992的博客 328

微信公众号网页H5跳转小程序实战指南(开放标签wx-open-launch-weapp)微信H5跳转小程序、wx-open-launch-weapp、小程序跳转按钮、微信开放标签、H5打开小程序

跳转小程序(wx-open-launch-weapp)唤起App显示支付按钮等等……而我们这次要用的,就是跳转小程序的标签。场景是否支持服务号网页✅ 支持小程序静态网页托管✅ 支持订阅号❌ 不支持微信外部浏览器❌ 不支持这个“开放标签”功能其实很强大,除了跳转小程序,还有唤起APP、跳支付、调用客服等能力。但可惜资料零散,很多坑等着你亲自踩一遍。这篇文章我整理的流程基本涵盖了从“能不能跳”到“怎么跳”的完整路径,希望你能像我一样省下几个小时的踩坑时间。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1163

Android ORM框架对比与选型指南

ORM(对象关系映射)技术通过将数据库表映射为编程语言中的对象,极大简化了数据持久化操作。其核心原理是在应用层与数据库之间建立抽象层,自动处理SQL生成和结果集转换。在Android开发中,ORM框架能显著减少模板代码,提升开发效率并降低出错概率。Room作为官方推荐方案,集成了LiveData支持与编译期检查;GreenDAO凭借代码生成技术实现极致性能;LiteOrm则以轻量级设计适合快速开发。根据项目规模、性能需求和团队经验,合理选择ORM框架对应用架构至关重要,特别是在需要处理高频CRUD操作或复杂

weixin_33721427的博客 501

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

android 面试题

ContextImpl.startActivity → Instrumentation.execStartActivity → AMS.startActivity → 校验权限、创建 ActivityRecord、Pause 当前 Activity → ApplicationThread.scheduleTransaction → ActivityThread.H → LaunchActivityItem → performLaunchActivity(创建 Activity、调用 onCreate)。

qq_25657125的博客 390

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Android 随笔集 By tuliyuan

1.反射机制调用系统服务EthernetManager private void getNetInfo(Context context) { try { // Log.d(TAG, "dddd getNetInfo is " ); Method getServiceMethod = Class.forName("android.os.ServiceManager").getDeclaredMethod("getService", new Cla

qq_18906227的博客 2276

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

上一篇: 网络请求返回HTTP状态码(404,400,500)
下一篇: Android选择文件并上传
秋天不落叶-
博客等级 码龄13年 65粉丝 65原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值