GreenDao集成与使用

最新版本greenDao V3.2.2的集成与使用(附完整demo) 前言:使用过GreenDao的同学都知道,3.0之前需要通过新建GreenDaoGenerator工程生成Java数据对象(实体)和DAO对象,非常的繁琐而且也加大了使用成本。GreenDao  3.0之后最大的变化就是采用注解的方式通过编译方式生成Java数据对象和DAO对象。本篇我们就交大家集成最新版本V3.2.2.1.在project中的gradle添加// In your root bui... 阅读详情

GreenDao是一款开源的轻便快捷的数据库框架,无需编写复杂的SQL语句,在性能方面,GreenDao针对 Android 进行了高度优化, 最小的内存开销 、依赖体积小 同时还是支持数据库加密。

一、GreenDao集成
首先在项目的build.gradle中添加:

dependencies {     
        classpath 'org.greenrobot:greendao-gradle-plugin:3.2.1'
    }

然后在module的build.gradle中添加:

apply plugin: 'org.greenrobot.greendao'
...
greendao {
        schemaVersion 1
        daoPackage 'com.huzhuwei.greendao.gen'//这个是生成代码保存的包名
        targetGenDir 'src/main/java'//保存到java代码路径
    }
dependencies {
    compile 'org.greenrobot:greendao:3.2.0'
    compile 'org.greenrobot:greendao-generator:3.2.0'
}

二、GreenDao的使用
创建实体类

@Entity
public class User {

    @Id(autoincrement = true)
    private Long id;

    private String text;
    private String comment;
    private Date date;
}

然后Make Project(Ctrl + F9),就可以自动生成如下代码:
在这里插入图片描述
在Application中添加如下代码:

public class MyApp extends Application {

    public static final boolean ENCRYPTED = true;

    private DaoSession daoSession;

    @Override
    public void onCreate() {
        super.onCreate();
       ...
        DaoMaster.DevOpenHelper helper = new  DaoMaster.DevOpenHelper(this, ENCRYPTED ? "users-db-encrypted" : "users-db");
        Database db =  helper.getWritableDb();
        daoSession = new DaoMaster(db).newSession();
        ...
    }
    ...
    public DaoSession getDaoSession() {
        return daoSession;
    }
}

使用GreenDao进行增删改查操作

/**
 * greenDao的官方地址http://greenrobot.org/greendao/
 * github地址https://github.com/greenrobot/greenDAO
 */

public class MainActivity extends AppCompatActivity implements View.OnClickListener{

    private UserDao userDao;
    private AutoCompleteTextView text;
    private AutoCompleteTextView comment;
    private Button butAddData;
    private Button butShowData;
    private Button butDelData;
    private Button butModifyData;
    private TextView tShow;
    private EditText num;
    private Query<User> userQuery;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        DaoSession daoSession = ((MyApplication) getApplication()).getDaoSession();
        userDao = daoSession.getUserDao();
        initView();
    }

    private void initView() {
        text = (AutoCompleteTextView) findViewById(R.id.edit_text);
        comment = (AutoCompleteTextView) findViewById(R.id.edit_comment);
        tShow = (TextView) findViewById(R.id.text_show_data);
        num = (EditText) findViewById(R.id.exit_id);
        butAddData = (Button) findViewById(R.id.but_add_data);
        butShowData  = (Button) findViewById(R.id.but_show_data);
        butDelData = (Button) findViewById(R.id.but_del_data);
        butModifyData = (Button) findViewById(R.id.but_modify_data);

        butAddData.setOnClickListener(this);
        butShowData.setOnClickListener(this);
        butDelData.setOnClickListener(this);
        butModifyData.setOnClickListener(this);

    }

    @Override
    public void onClick(View v) {
        switch (v.getId()){
                //增
            case R.id.but_add_data:
                String test = text.getText().toString();
                String con = comment.getText().toString();
                User user = new User();
                user.setComment(con);
                user.setDate(new Date());
                user.setText(test);
                userDao.insert(user);
                text.setText("");
                comment.setText("");
                break;
                
                //查
            case R.id.but_show_data:
                //按找id z-a排序查询
                // userQuery = userDao.queryBuilder().orderDesc(UserDao.Properties.Id).build();
                //按找id a-a排序查询
                userQuery = userDao.queryBuilder().orderAsc(UserDao.Properties.Id).build();
                //查询满足指定属性值的结果
                //userQuery = userDao.queryBuilder().where(UserDao.Properties.Text.eq(33),UserDao.Properties.Comment.eq(22)).build();
                List<User> datalist= userQuery.list();
                StringBuffer res = new StringBuffer();
                for (User user1 : datalist) {
                    res.append("id= "+user1.getId());
                    res.append("  text="+user1.getText());
                    res.append("  comment="+user1.getComment()+"\n");
                    //res.append(" date="+user1.getDate()+"\n");
                }
                tShow.setText(res.toString());
                break;
                
                //删
            case R.id.but_del_data:
                String index = num.getText().toString();
                userDao.deleteByKey(Long.valueOf(index));
                num.setText("");
                break;
                
                //改
            case R.id.but_modify_data:
                String www = num.getText().toString();
                String test2 = text.getText().toString();
                String con2 = comment.getText().toString();
                User user2 = new User();
                user2.setId(Long.valueOf(www));
                user2.setComment(con2);
                user2.setDate(new Date());
                user2.setText(test2);
                userDao.update(user2);
                text.setText("");
                comment.setText("");
                num.setText("");
                break;
        }
    }
}

三、GreenDao常用注解

@Entity 用于标识这是一个需要Greendao帮我们生成代码的bean

@Id 标明主键,括号里可以指定是否自增

@Property 用于设置属性在数据库中的列名(默认不写就是保持一致)

@NotNull 非空

@Transient 标识这个字段是自定义的不会创建到数据库表里

@Unique 添加唯一约束

@ToOne 是将自己的一个属性与另一个表建立关联(外键)

@ToMany的属性referencedJoinProperty,类似于外键约束。

@JoinProperty 对于更复杂的关系,可以使用这个注解标明目标属性的源属性。

深入解析GreenDao Android ORM框架的使用与集成 ORM映射机制的核心目标是将面向对象编程语言中的对象(Objects)与关系型数据库中的行(Rows)进行映射。这样做的好处在于,开发者可以使用熟悉的对象编程模型来操作数据库,而无需直接编写SQL语句。一个典型的映射包括以下步骤:数据库设计者会创建数据库模式(Schema),确定数据表、字段以及它们之间的关系。ORM框架提供工具来自动生成数据模型的类(通常称为实体类 Entity),这些类的属性与数据库表的列相对应。 阅读详情

相关推荐

GreenDao集成SqlCipher

基于Android Studio 1.5.1集成GreenDao2.0.0、SqlCipher、AndroidAnnotations3.3.2

GreenDao集成

1)在Project的build.gradle文件中配置 repositories { mavenCentral() } dependencies { classpath 'org.greenrobot:greendao-gradle-plugin:3.2.2' } 2)在module的build.gradle中配置 apply plugin: 'org.greenro...

weixin_37073118的博客 537

GreenDao3.2.2集成与使用

GreenDao的集成与使用

GreenDao 3.0 简介、使用及踩坑

一、GreenDao 简介   GreenDAO 是一款开源的面向 Android 的轻便、快捷的 ORM 框架,将 Java 对象映射到 SQLite 数据库中,我们操作数据库的时候,不再需要编写复杂的 SQL语句, 在性能方面,greenDAO 针对 Android 进行了高度优化,最小的内存开销 、依赖体积小 同时还是支持 数据库加密。   greenDAO 官网地址:greenrobot.org/greendao/   greenDAO GitHub 源码地址:greenrobot/greenDA

ZhangRui的博客 1万+

微信开放标签wx-open-launch-app样式失效?手把手教你正确设置点击区域(附完整代码)

本文详细解析了微信开放标签`wx-open-launch-app`样式失效和点击无响应的常见问题,提供了完整的解决方案和代码示例。通过分析标签内部实现机制,指导开发者正确设置点击区域和样式,确保跨平台兼容性和用户体验优化。

joy55的博客 320

算法交易VWAP&TWAP

VWAP的一些算法模型细节参考博客地址http://blog.sina.com.cn/s/blog_ad47bc5b01014elx.html 日内交易量预测模型http://blog.sina.com.cn/s/blog_976461170102v43p.html 算法交易其实主要是用在基金公司、券商量化比较多。例如我已经选好股,要大量买入,但是单凭交易员的操作海量单而且要完

shulixu的博客 1万+

greenDao集成流程(四步完成)

集成流程: 1.导入依赖 implementation ‘org.greenrobot:greendao:3.2.2’ implementation ‘org.greenrobot:greendao-generator:3.2.2’ 2.打开module的build.gradle配置,最顶上加上: apply plugin: ‘org.greenrobot.greendao’ 在最外层添加,要与a...

qq_42818575的博客 527

Qcom camera hal简介

Qcom camera hal简介

weixin_42136255的博客 7764

Android数据库框架greenDao学习笔记(一)----集成

引言  在项目中经常会用到数据存储、缓存等等,常用的一种方式就是数据库存储,从追求开发效率的角度讲,一般公司都会用第三方开源库,greenDao是目前口碑比较好的数据库框架之一。官方网站点击这里greenDao基本介绍  greenDao是一个开源Android ORM(Object Relation Mapping,对象关系映射) 框架,它使得Sqlite数据库开发变得有趣。它节约了开发人员写SQ

不悔的青春 2251

AI驱动视频剪辑自动化:cutcli命令行工具重塑工作流

视频剪辑自动化是提升内容生产效率的关键技术,其核心原理在于通过程序化指令替代手动操作,将创意执行过程代码化。这项技术的价值在于能够将创作者从重复性劳动中解放,实现批量化、标准化的视频内容生产,尤其适用于社交媒体运营、产品宣传等高频产出场景。通过封装专业软件(如剪映/CapCut)的底层草稿格式,自动化工具在保证工业级渲染质量的同时,提供了可编辑的中间态,为AI智能体(Agent)与生产工具的结合提供了清晰接口。本文以cutcli为例,深入探讨了如何通过命令行工具和AI助手,构建从自然语言指令到可编辑视频草稿

weixin_27210125的博客 1063

ESP32开发环境避坑指南:用Thonny烧录MicroPython固件时常见的5个错误及解决方法

本文针对ESP32开发新手,详细解析了使用Thonny IDE烧录MicroPython固件时最常见的5个错误及其解决方案。内容涵盖驱动安装、端口识别、固件烧录失败、版本兼容性、连接不稳定以及文件系统操作异常等核心痛点,并提供硬件层面的深度排查指南,帮助开发者高效搭建稳定的ESP32开发环境。

weixin_29189003的博客 407

Android开发,GreenDao的简单使用

Android开发,GreenDao的简单使用,个人学习记录,错误很多,不供参考 绿刀(自己编)数据库开源框架使用方法: 1.在项目的app,单击右键选择Open Moudle Setting, 找到 app, 右方选择 Dependences依赖,选择”+”添加,输入greendao, 回车(需要网络),然后选择你想要版本. 我选的是“de.greenrobot:greendao:2.1.0” **2.在项目名上,单击右键选择 new --> Moudle. 选择 java Moudle,名字自取

qq_41904106的博客 760

【Google Play 上架】内部 / 封闭 / 开放 测试全解 — “只跑一个就能上架”?不行!

Google Play新规要求个人开发者账号在2023年11月13日后必须通过封闭测试(Closed testing)才能上架应用。封闭测试需要至少12名测试者连续14天保持参与状态,而内部测试和开放测试不能替代这一要求。三类测试轨道各有特点:内部测试用于快速内部验证,封闭测试是上架必经环节,开放测试面向更广泛用户但非必需。上架流程建议先内部测试修复问题,再启动封闭测试满足14天要求,最后申请生产发布。组织账号和早期个人账号可能不受此限制。开发者应提前规划测试人群,确保持续测试周期,并关注Play Cons

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 2799

GreenDao集成使用

1、在项目中引入greendao,配置如下 dependencies { implementation fileTree(dir: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:27.1.1' implementation 'com.android.support.constraint:...

weixin_34194317的博客 107

USB驱动(URB)

本文介绍了Linux内核中USB驱动开发的核心概念URB(USB Request Block)。URB是主机与USB设备间传输数据的抽象结构体,包含目标设备、端点信息、数据缓冲区等关键字段。文章详细解析了URB的生命周期(分配、填充、提交、回调、释放)、四种传输类型(控制、批量、中断、等时)及其应用场景,并提供了鼠标设备的中断传输示例代码。最后强调了URB使用注意事项,包括DMA缓冲区分配、错误处理和资源释放等。URB作为USB驱动与内核通信的桥梁,是构建稳定USB驱动程序的基础。

m0_49476241的博客 915

基于通义千问2.5-7B-Instruct的技术深度解析

通义千问2.5-7B-Instruct是一个基于Transformer架构的大型语言模型,具有70亿参数。它通过自注意力机制和前馈神经网络处理输入序列,能够捕捉长距离依赖关系,适用于多种NLP任务。微调是指在预训练模型的基础上,使用特定任务的数据进行进一步训练,以使模型更好地适应特定任务。微调可以显著提高模型在特定任务上的性能。通义千问2.5-7B-Instruct是一个强大的语言模型,适用于多种NLP任务。通过深入理解其架构、微调方法和核心代码,可以更好地应用于实际场景。

zhangjiaofa的专栏 1568

Android数据库GreenDao详细集成解析33

GreenDao 官方网站地址:http://greenrobot.org/greendao/ github地址 :https://github.com/greenrobot/greenDAO GreenDao 优点: 1查询效率高 2 内存占用小 3集成方便 使用方法: 1 引用(一个都不能少) APP下的build.gradle 第一句一...

一个人的暗 811

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Android中DevRing集成GreenDao

2.在数据库管理者中实例化数据库帮助类,并获取数据库连接,实例化DaoMaster,DaoSession。1.在MyApplication中将数据库管理者GreenDBManager传入DevRing的配置中。5.在数据库管理者中将,数据表实体类和数据表管理者以key-value形式放到数据表管理中。2.在androidTest下添加数据库数据表文件的生成类。3.在MyApplication在初始化数据库。4.在数据表管理者中,获取数据表操作对象dao。3.在数据库管理者中实例化数据表管理者。

weixin_45367987的博客 514

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

greendao 3.0集成和使用封装

现在项目中要用到数据库,最终选择使用了greendao ,至于原因,肯定是性能原因了。本文将着重介绍数据库的异步操作,因为网上很多都是配置集成+简单的使用,并且都还是同步的(重要的是 都是一样的文章!!!)。我想说,如果是百万级的数据就GG了。 一般来说,我们需要数据时,先访问数据库看是否有数据,如果有,就从数据库取,如果没有,就访问网络,成功后,将开启线程将数据插入数据库中,同事更新UI 如下图

lmq121210的博客 2875

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

ORM框架之GreenDao3.0集成与注解(一)

GreenDao简介  GreenDao是一个将对象映射到SQLite数据库中的轻量且快速的ORM数据库框架,本文将讲解如何集成GreenDao3.0环境,如何使用GreenDao自动生成代码及注解的使用。      GreenDao官网   GreenDao GitHubGreenDao3.0优势  GreenDao相较于ORMLite等其他数据库框架有以下优势:   1. 一个精简的库

LeiHolmes的博客 732

GreenDao3.2.2集成使用以及数据库的升级

GreenDao3.2.2集成使用以及数据库的升级 一概念      是一个将对象映射到 SQLite 数据库中的轻量且快速的 ORM 解决方案。                                                       二优点:      一个精简的库;性能最大化;内存开销最小化;易于使用的 APIs;对 Android 进行高度优化。 三集成

xuwb123xuwb的博客 6874

在eclipse环境下集成开源数据库框架greenDao

demo下载地址: http://download.youkuaiyun.com/detail/sagemwireless_jsc/9366694 集成步骤: 1:在eclipse中新建一个java工程,这个工程是用来生成代码的        在eclipse中 File ->New  ->Java project               然后写上java工程名:

sagemwireless_jsc的专栏 871

GreenDao3的集成

【一】greenDAO3基本介绍     greenDAO3开始使用注解的方式定义实体类(entity),并且是通过安装gradle插件来生成代码。之前的版本则是通过建立一个独立的java工程来存放生成的文件。 【二】导入相关的包 [html] view plain copy  print? compile 'org.gre

Only you 2744

ORM框架之GreenDao3.0集成与注解

GreenDao简介   GreenDao是一个将对象映射到SQLite数据库中的轻量且快速的ORM数据库框架,本文将讲解如何集成GreenDao3.0环境,如何使用GreenDao自动生成代码及注解的使用。   官网地址:http://greenrobot.org/greendao/   GreenDao相较于ORMLite等其他数据库框架有以下优势:   1. 一个精简的库   2...

543
上一篇: Android IPC机制—Binder的工作机制
下一篇: ORMLite的集成和使用
Watch_the_corner
博客等级 码龄10年 30粉丝 66原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值