关于第三方开源库GreenDao的使用心得

Android常用开源库(模块部分) 创建Glide的主要目的有两个,一个是实现平滑的图片列表滚动效果,另一个是支持远程图片的获取、大小调整和展示。OkHttp是对Http协议的高度封装,支持get请求和post请求,支持基于Http的文件上传和下载,支持加载图片,支持下载文件透明的GZIP压缩,支持响应缓存避免重复的网络请求,支持使用连接池来降低响应延迟问题。Volley和Retrofit一样,也是一个网络请求框架,以通过它访问普通的网络数据,如JSON格式的数据,也可以下载图片。内部集成了OkHttp的网络框架(毕竟都是一家的产品)。 阅读详情

简介:GreenDao是一个用于操作Sqlite数据库的开源ORM框架,可以很方便的对数据库进行对象映射,增删改查等操作。优点是效率方面在类似框架中是最高的
使用步骤:
1、从github上将项目下载下来,导入开发工具。下载地址:https://github.com/greenrobot/greenDAO
2、其中有两个java项目,这两个java项目是用于生成bean文件和DaoMaster、DaoSession文件的,在示例文件中添加指定的bean,设置属性后运行java项目。此处注意,该项目运行java项目时,需要导入freemarker-xxx.jar,下载地址:http://freemarker.org/freemarkerdownload.html; 指定生成的目录时要填写src-gen,该目录必须在android项目中创建好,否则会报错;要写android项目的包名及项目路径
3、生成完后,在android项目中刷新src-gen目录后找到生成的文件,在自定义application中,添加两个方法

    /**
     * 取得DaoMaster
     * 
     * @param context
     * @return
     */
    public static DaoMaster getDaoMaster(Context context) {
        if (daoMaster == null) {
            OpenHelper helper = new DaoMaster.DevOpenHelper(context,
                    Constants.DB_NAME, null);
            daoMaster = new DaoMaster(helper.getWritableDatabase());
        }
        return daoMaster;
    }

    /**
     * 取得DaoSession
     * 
     * @param context
     * @return
     */
    public static DaoSession getDaoSession(Context context) {
        if (daoSession == null) {
            if (daoMaster == null) {
                daoMaster = getDaoMaster(context);
            }
            daoSession = daoMaster.newSession();
        }
        return daoSession;
    }

4、然后创建数据库操作类

package com.example.android.dao;

import java.util.List;

import org.apache.http.client.methods.HttpUriRequest;

import com.example.android.Cookie;
import com.example.android.CookieDao;
import com.example.android.DaoSession;
import com.example.android.Note;
import com.example.android.NoteDao;
import com.example.android.app.MyApplication;
import com.example.android.utils.CommonUtils;
import com.example.android.utils.LogUtils;

import android.content.Context;

/**
 * 测试数据库操作类,用于操作sqlite
 * 
 * @author Ht
 * 
 */
public class MyCookieDao {
    private static MyCookieDao mInstance;
    private DaoSession mDaoSession;

    private CookieDao cookieDao;

    private MyCookieDao() {
    }

    public static MyCookieDao getInstance(Context context) {
        if (mInstance == null) {
            mInstance = new MyCookieDao();
            mInstance.mDaoSession = MyApplication.getDaoSession(context);
            mInstance.cookieDao = mInstance.mDaoSession.getCookieDao();
        }

        return mInstance;
    }

    /**
     * 增加或修改某条数据
     * 
     * @param note
     */
    public void saveCookie(Cookie cookie) {
        cookieDao.insertOrReplace(cookie);
    }

    /**
     * 批量添加数据(开启线程)
     * 
     * @param list
     */
    public void saveCookieLists(final List<Cookie> list) {
        if (list == null || list.isEmpty()) {
            return;
        }
        cookieDao.getSession().runInTx(new Runnable() {
            @Override
            public void run() {
                for (int i = 0; i < list.size(); i++) {
                    Cookie cookie = list.get(i);
                    // 查询要插入的数据是否已存在
                    Cookie cacheCookie = queryCookie("where KEY=?",
                            cookie.getKey());
                    // 没有有效期的Cookie无需存储
                    if (cookie.getExpires() != null) {
                        // 已存在的Cookie直接更新
                        if (cacheCookie != null) {
                            cookie.setId(cacheCookie.getId());
                        }

                        cookieDao.insertOrReplace(cookie);
                    }
                }
            }
        });
    }

    /**
     * 删除指定id的数据
     * 
     * @param id
     */
    public void deleteCookie(long id) {
        cookieDao.deleteByKey(id);
    }

    /**
     * 删除指定的数据
     * 
     * @param note
     */
    public void deleteCookie(Cookie cookie) {
        cookieDao.delete(cookie);
    }

    /**
     * 删除全部数据
     */
    public void deleteAllCookie() {
        cookieDao.getSession().runInTx(new Runnable() {

            @Override
            public void run() {
                cookieDao.deleteAll();
            }
        });
    }

    /**
     * 查找指定数据
     * 
     * @param id
     * @return
     */
    public Cookie loadCookie(long id) {
        return cookieDao.load(id);
    }

    /**
     * 查找全部数据
     * 
     * @return
     */
    public List<Cookie> loadAllCookie() {
        return cookieDao.loadAll();
    }

    /**
     * 获取当前Cookie
     * 
     * @return
     */
    public String getCookiesHeader(String url) {
        List<Cookie> cookies = loadAllCookie();
        StringBuilder cookieStr = new StringBuilder();
        for (int i = 0; i < cookies.size(); i++) {
            // 验证Cookie的有效性
            if (CommonUtils.checkCookie(url, cookies.get(i))) {
                // 验证通过,拼接Cookie
                if (i == cookies.size() - 1) {
                    cookieStr.append(cookies.get(i).getKey() + "="
                            + cookies.get(i).getValue());
                } else {
                    cookieStr.append(cookies.get(i).getKey() + "="
                            + cookies.get(i).getValue() + ";");
                }
            } else {
                // 验证不通过,删除无效Cookie
                deleteCookie(cookies.get(i));
            }
        }
        return cookieStr.toString();
    }

    /**
     * 根据条件查找多条数据
     * 
     * @param where
     * @param params
     * @return
     */
    public List<Cookie> queryCookies(String where, String... params) {
        return cookieDao.queryRaw(where, params);
    }

    /**
     * 根据条件查找单条数据
     * 
     * @param where
     * @param params
     * @return
     */
    public Cookie queryCookie(String where, String... params) {
        List<Cookie> queryRaw = cookieDao.queryRaw(where, params);
        if (queryRaw != null && queryRaw.size() > 0)
            return queryRaw.get(0);
        return null;
    }

}

总结:在使用时直接调用对应的方法即可,可根据需求自定义数据库操作类,非常方便和高效的使用方式

数据库那些事--greenDAO增删查改 转载请注明出处:王亟亟的大牛之路话不多说先安利:https://github.com/ddwhan0123/Useful-Open-Source-Android 一直在加新东西,你值得拥有这几天忙的1B,这里跑那里跑,写的Demo就是没时间发帖,昨天10来点到家然后 弄鱼 弄麦麦啥的再敲敲代码就1点了,早上起来困的1B。。。。OK,先来说下为什么写这篇文章。上周面试,一个面试官问了一堆,答得还不错, 阅读详情

相关推荐

ORMLite和GreenDao性能对比Demo

ORMLite和GreenDao性能对比Demo,两个常用数据库ORM框架用法与比较

Android之greenDao(初识greenDao)

文章目录初识greenDaogreenDao概述greenDao配置(Android Studio)greenDao数据库版本更迭处理greenDao简单使用 初识greenDao greenDao概述 greenDao简介 SQLite是一个很棒的嵌入式关系数据库。尽管如此,编写SQL和解析查询结果仍然是一项非常繁琐且耗时的任务。而greenDAO是一个针对SQLite数据库的Android ...

继承接口的博客 842

rk3568 OpenHarmony4.0如何使用中文输入法

问题:rk3568开发板 OpenHarmony4.0release系统自带输入法kikaInput软件只有英文输入,不含中文输入,不方便。本文基于rk3568开发板 OpenHarmony4.0release移植了laval社区发布的开发者手机中的搜狗输入法(测试版),实现了中文输入,为OpenHarmony4.0release的其他开发板中文输入提供参考。

Devlin_的博客 2913

greendao源码、流程、优点全面解析

greendao数据库框架是目前我经常在使用的框架,但一直没有真正的仔细的去研究,网上的一些资料感觉都没有总结全面,看完之后总是没有形成体系。所以在此自己总结一篇。 greendao数据库框架的优点可以总结为: 1.crud的性能高效 2.支持数据库加密来保存敏感数据 3.库的体积小 4.可以进行同步和异步操作 5支持内存缓存,提高查询性能 6.代码自动生成,使用简单,无需关注实体类 7.可以和r...

记录网络缺失的知识 811

泛微OA与金蝶云星空深度集成实战:审批与表单双场景解析

本文深入解析泛微OA与金蝶云星空的深度集成实战,聚焦审批流程与表单对接两大核心场景。通过具体案例,详细阐述了如何实现业务数据与审批流程的自动联动,打破数据孤岛,提升企业运营效率与数据一致性,并分享了接口设计、安全策略及实战避坑指南。

4k5l6j7h8的博客 466

不只是抓取:用五指灵巧手(ROH-A001/RH56)玩转ROS2下的力控与混合控制

本文深入探讨了在ROS2环境下使用五指灵巧手(ROH-A001/RH56)实现力控与混合控制的实战技巧。从硬件通信协议解析到ROS2节点开发,详细介绍了力感知架构、实时数据处理和混合控制策略,帮助开发者在Ubuntu系统中高效实现精密操作。通过鸡蛋抓取等实例,展示了力控技术在机器人灵巧操作中的关键作用。

weixin_28221501的博客 287

greenDAO优点及使用详解

一、关于greenDAO greenDAO是一个开源的Android ORM,它让SQLite数据库的开发再次变得有趣。它使开发人员免于处理低级数据库要求,同时节省了开发时间。SQLite是一个很棒的嵌入式关系数据库。尽管如此,编写SQL和解析查询结果仍然是非常繁琐且耗时的任务。通过将Java对象映射到数据库表(称为ORM,“对象/关系映射”),greenDAO使您摆脱了这些麻烦。这样,您可以使用简单的面向对象的API来存储,更新,删除和查询Java对象。 ...

中控易动的博客 5121

DC/DC开关电源学习笔记(十五)四开关Buck-Boost-FSBB升降压电路拓扑与工作原理

在DCDC领域,最为常见的是buck拓扑,其次是boost拓扑,而buck-boost的关注度相对较低。但是在电池供电场景日益普及的现在,升降压的需求在不断上升,现在更加关注buck-boost这个拓扑。而在所有buck-boost拓扑中,四开关buck-boost最受欢迎。四开关buck-boost的拓扑很简单,如下图。

小幽余生不加糖 6012

GreenDao简单介绍及使用

大buide中,导入 classpath 'org.greenrobot:greendao-gradle-plugin:3.2.0' 配置数据库,注册Application /** * 用来配置数据库 */ public class MyApp extends Application { private static DaoSession mDaoSession; @Ove...

怪咖小白的博客 696

Cadence PSpice 模型1:基于自带库新建二极管的PSpice模型图文教程

使用Cadence PSpice进行电路图的仿真时,难免会遇到软件自带库中没有合适的元器件的情况,这就需要设计师自己新建元器件模型,本文详细介绍使用PSpice软件修改自带库的元器件模型的参数以得到自己需要的PSpice模型库的方法。

fydar的博客 4413

大厂硬件笔试机试题ASIC设计方向-卷3

本文提供了30道硬件工程师机试题目,涵盖数字逻辑、模拟电路、CMOS和信号处理等核心领域。选择题和判断题均配有详细解析,重点考察Verilog编程、CMOS特性、触发器设计、采样定理等知识点。题目难度适中但覆盖面广,如Verilog中阻塞/非阻塞赋值的区别、CMOS静态功耗来源、Nyquist采样定理、通用逻辑门判断等。备考建议强调掌握逻辑门设计、Verilog时序电路编写和CMOS特性理解。这些题目反映了华为等大厂硬件机试的典型考查内容,通过系统复习可有效提升机试成绩,为后续面试奠定基础。

启芯硬件的博客 545

Android数据库GreenDao和Realm的对比

Android数据库GreenDao和Realm的对比 Android开发的童鞋应该都知道,使用官方的SQLite数据库,可以满足我们大部分增删改查的需求,然而随着Android技术的逐步成长,你会慢慢发现SQLite越来越不能满足我们的需求。总结为以下主要几点: 1、创表,增删改查需要些大量代码,开发效率极低 2、需大量封装,测试繁琐。 3、效率极低(当你使用了GreenDao||Realm你会发现它完全不能接受)。 4、加密等操作需手动处理。 正因为SQLite的繁琐使用,Andorid也会随着JA

elank0521的博客 902

基于 STM32 的便携式肌电信号采集与疲劳度评估系统设计与实现

本系统以 STM32 单片机为核心控制器,通过肌电电极采集人体骨骼肌表面的 sEMG 信号,经仪表放大、滤波、AD 采样后送入 MCU 进行时域 / 频域特征提取,利用 RMS(均方根)、MPF(中位频率)、MF(平均频率)等指标实时评估肌肉疲劳状态,最终通过 OLED 显示疲劳等级,并支持蓝牙上传至上位机。

weixin_42300449的博客 105

【Android -- 开源库】数据库 GreenDao 的基本使用

GreenDao 是一款操作数据库的神器,经过了2.0版本的升级后,已经被广泛的开发者使用。

Kevin Learn Android 3805

Python爬虫应对Cloudflare防护:5秒盾+Turnstile验证码实战(AST反混淆+指纹模拟,成功率95%)

Cloudflare 5秒盾+Turnstile验证码的防护核心,是通过“前端JS挑战+多维度指纹校验”确认请求来源的真实性。用AST反混淆还原CF的验证逻辑,避免执行无用代码导致的验证失败;基于真实浏览器采集指纹,确保指纹维度100%匹配真人环境;结合轻量级JS引擎和自动化工具,模拟完整的浏览器执行环境。该方案的绕过成功率可达95%(剩余5%主要是IP或请求频率导致的风控),适用于绝大多数部署CF防护的网站。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1717

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

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

Android GreenDao浅析

GreenDAO简介 GreenDao是一个为了帮助Android开发者操作SqLite数据库的开源项目。SQLite数据库是一个轻量级的关系型数据库。但是,对SQLite数据库操作需要大量的额外工作,例如,写SQL语句和解析查询出来的结果是一个很繁琐的任务。GreenDao将可以为你解决这一切工作:它可以把Java对象转换成数据库表(也就是所谓大家熟悉的ORM,做过Java的同学应该知道Hib

Picasso_L的专栏 2921

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

第三方开源库:数据库:GreenDao

参考: GreenDao3.0学习(一) GreenDao3.0学习(二) GreenDao3.0学习(三) github : https://github.com/greenrobot/greenDAO简介GreenDao是一个用于Android开发的对象/关系映射(ORM)工具。它向SQLite数据库提供了一个对象导向的接口。主要是将对象映射到SQLite数据库中,GreenDao3.0

Java技术博客,不再更新Android内容 3064

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

GreenDAO 用法详解

转载:https://blog.youkuaiyun.com/poorkick/article/details/55271660 简介 greenDAO是一个开源的Android ORM,使SQLite数据库的开发再次变得有趣。 它减轻了开发人员处理底层的数据库需求,同时节省开发时间。 SQLite是一个很不错的关系型数...

My Note 2740

《Android 开源库》 GreenDAO 用法详解(译文)

greenDAO是一个开源的Android ORM,使SQLite数据库的开发再次变得有趣。 它减轻了开发人员处理底层的数据库需求,同时节省开发时间。 SQLite是一个很不错的关系型数据库。 尽管如此,编写SQL和解析查询结果仍然是相当乏味和耗时的任务。 greenDAO通过将Java对象映射到数据库表(称为ORM,“对象/关系映射”)来解决这些问题。 这样,您可以使用简单的面向对象的API来存储,更新,删除和查询

AndroidKt 1万+

Android greenDAO使用方法解析

greenDAO在Android开发中提供了一个面向对象的数据接口,使用过程中只需要定义数据原型,greenDao将为你自动创建数据原型及DAOs (data access objects),方便开发者对SQLite进行操作。

guokehello的专栏 896

开源库greenDAO在Android ORM中的使用经验

本文着重介绍怎么快速在Android Studio下引入greenDAO,旨在帮助开发新手减少在配置环境方面的时间。文章内容包含了greenDAO使用步骤,异常处理和示例。

zhangming优快云 573

Android开源库选型指南与性能优化实践

在Android开发中,开源库是提升开发效率的关键组件,涵盖UI、网络、数据库等多个领域。通过模块化设计,开发者可以快速集成成熟解决方案,如Glide实现高效图片加载,GreenDAO优化数据库操作。这些库基于特定技术原理,如RxAndroid采用响应式编程模型,LeakCanary运用内存监控机制。合理选型能显著提升应用性能,例如在百万级数据操作中,ORM框架可降低60%的耗时。典型应用场景包括电商应用的图片缓存、社交平台的实时通信等。本文重点解析SlidingMenu、ViewPagerIndicato

chuannaoxuan4674的博客 303

Android GreenDao

离线开发 开发工具: androidStudio ,SQLite3 使用开源库:GreenDao 3.2.2 离线已实现: 1. 增、删、改、查 2. 新增表,字段,更改字段,升级数据迁移 3. 从服务器下载数据,并更新到本地数据表 4. 代码封装 集成: 1. 项目根目录添加环境 buildscript { ... dependencies { classpath 'com.android.tools.build:gradle:3.6.0' .

FN的博客 1825

greenDao源码分析

前言 今天我们来分析下GreenDao, 进而学习开源库中涉及到的一些思想. 简单的实例 1.导入相应的库 // 项目 build.gradle file: buildscript { repositories { jcenter() mavenCentral() } ...

路一直在 874
上一篇: Volley自动获取以及存储Cookie
下一篇: Android开发框架FastAndroid详解
ht_android
博客等级 码龄12年 33粉丝 19原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值