GreenDAO 3.0 初次使用

GreenDao 3.3.0 基本使用与入门 (一) GreenDao 引入 GreenDao官网 GreenDaoAPI地址 Porject 目录下 build.gradle 下添加配置 dependencies { classpath 'com.android.tools.build:gradle:4.0.0' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'com.neenbedan 阅读详情

      之前项目中用到了GreenDAO,使用的是2.X的版本,总结下来就是非常难用。2.X中是新建一个项目,然后再项目中配置各个实体的字段等相关属性,然后生成实体以及DAO操作相关的一些类。但是,当你修改了实体中的一些属性,并且这些属性又要在数据库中保存的时候,你会发现每次重新运行generator之前的改变都得重新再来一次。
      GreenDAO中比较大的变化就是使用了注解和Gradle,而且生成方式也发生了逆向变化,现在是先自己新建实体,然后从实体生成DAO操作相关的一些类。
      有两种方式使用最新的GreenDAO3,一种是保留用于生成的项目,另一种则是使用基于注解的实体生成方式。我们会注意到GreenDAO3之后,包名由之前的de.greenrobot 改为了 org.greenrobot。还要注意,de.greenrobot.daogenerator 变为了 org.greenrobot.greendao.generator。de.greenrobot.dao变为了org.greenrobot.greendao。

配置Gradle:

在你的build.gradle中加入以下内容:
buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0'
    }
}

// In current version 3.0.0, this must precede the android plugin!
apply plugin: 'org.greenrobot.greendao'

dependencies {
    compile 'org.greenrobot:greendao:3.0.1'
}

然后再Make Project 你会在build/generated/source/greendao中发现新生成的内容,build/generated/source/greendao是默认路径,可以去配置的,配置方法在接下来将会讲到。

Gradle Plugin的配置

// In the build.gradle file of your app project:
android {
...
}

greendao {
    schemaVersion 2
}

schemaVersion 当前数据库结构的版本。结构版本变化时在OpenHelpers中被使用到。当你改变实体或者数据的结构时,这个值应该增加。
daoPackage 生成的DAO,DaoMaster和DaoSession的包名。默认是实体的包名。
targetGenDir 生成源文件的路径。默认源文件目录是在build目录中的(build/generated/source/greendao)。
generateTests 设置是否自动生成单元测试。
targetGenDirTest 生成的单元测试的根目录。

实体注解:

@Entity(
        // 如果你有超过一个的数据库结构,可以通过这个字段来区分
        // 该实体属于哪个结构
        schema = "myschema",

        //  实体是否激活的标志,激活的实体有更新,删除和刷新的方法
        active = true,

        // 确定数据库中表的名称
        // 表名称默认是实体类的名称
        nameInDb = "AWESOME_USERS",

        // Define indexes spanning multiple columns here.
        indexes = {
                @Index(value = "name DESC", unique = true)
        },

        // DAO是否应该创建数据库表的标志(默认为true)
        // 如果你有多对一的表,将这个字段设置为false
        // 或者你已经在GreenDAO之外创建了表,也将其置为false
        createInDb = false
)
public class User {
  ...
}

注意,使用Gradle Plugin时暂不支持多个数据库结构。

基础的注解:

@Entity
public class User {
    @Id(autoincrement = true)
    private Long id;

    @Property(nameInDb = "USERNAME")
    private String name;

    @NotNull
    private int repos;

    @Transient
    private int tempUsageCount;

    ...
}

@Id 选定一个long/Long类型的字段作为实体的ID,即数据库中的主键。 @Property 让你自定义字段在数据库中的名称,如果为空,GreenDAO将根据驼峰法将其用”_”分割,并全部转为大写,如userName 变为 USER_NAME。 @NonNull 使字段在数据库中成为非空字段,通常都会将基本类型加上NonNull标志。 @Transient 使得字段不再持久化。

索引注解:

@Index 给对应的字段创建索引,可以使用以下参数进行自定义:
    name: 自定义的名称。
    unique: 添加唯一性标志,使得其值必须唯一。

@Entity
public class User {
    @Id private Long id;
    @Index(unique = true)
    private String name;
}

@Unique 对数据库列添加唯一性限制。

@Entity
public class User {
    @Id private Long id;
    @Unique private String name;
}

数据库关系注解

@ToOne 定义一对一的关系。此注解适用于其他实体对象的字段。GreenDAO需要一个字段来和外联实体中的ID相对应,所以在joinProperty中制定这个字段。如果没有自定,则会自动生成一个字段。

@Entity
public class Order {
    @Id private Long id;

    private long customerId;

    @ToOne(joinProperty = "customerId")
    private Customer customer;
}

@Entity
public class Customer {
    @Id private Long id;
}

@ToMany 定义和多个实体之间的关系。此注解适用于其他实体对象集合的字段。有三种方式可以用来实现多映射。
    referencedJoinProperty:指定目标实体中与源实体相对应的外键。

@Entity
public class User {
    @Id private Long id;

    @ToMany(referencedJoinProperty = "ownerId")
    private List<Site> ownedSites;
}

@Entity
public class Site {
    @Id private Long id;
    private long ownerId;
}

joinProperty: 对于复杂一点的关系可以定义一组@JoinProperty注解。每个@JoinProperty注解都需要有源实体中的源属性和对应实体中的引用属性。

@Entity
public class User {
    @Id private Long id;
    @Unique private String authorTag;

    @ToMany(joinProperties = {
            @JoinProperty(name = "authorTag", referencedName = "ownerTag")
    })
    private List<Site> ownedSites;
}

@Entity
public class Site {
    @Id private Long id;
    @NotNull private String ownerTag;
}

@JoinEntity 在做NM多对多映射的时候使用

@Entity
public class Site {
    @Id private Long id;

    @ToMany
    @JoinEntity(
            entity = JoinSiteToUser.class,
            sourceProperty = "siteId",
            targetProperty = "userId"
    )
    private List<User> authors;
}

@Entity
public class JoinSiteToUser {
    @Id private Long id;
    private Long siteId;
    private Long userId;
}

@Entity
public class User {
    @Id private Long id;
}

使用体会:
       升级到3.0后每次生成的DAO相关文件中总会报错,一个是DevOpenHelper中的方法名称发生了改变,还有就是DAOs中的bindValue(SQLiteStatement, T)没有了继承关系。

原文链接: https://blog.mrli.xyz/greendao3-init-use/

Greendao数据库升级添加String类型, 有关数据库更新,添加String类型同步更新没问题,greendao有个bug,就是添加别的类型都会报错 立即下载

相关推荐

greenDAO generator 支持默认值defaultValue和原始数据类型

此jar是修改了原作者的greenDAO generator项目的源码使其能支持defaultValue,以及产生的实体类entity支持原始数据. 具体可参考我的blog:http://blog.csdn.net/enyusmile/article/details/45498307

greenDao 3.X 的使用简析

greenDao 3.X 的使用简析 一个对象关系映射(ORM)的框架,能够提供一个接口通过操作对象的方式去操作关系型数据库,它能够让你操作数据库时更简单、更方便。 greenDAO github地址:https://github.com/greenrobot/greenDAO GreenDao 优点: 性能高,号称Android最快的关系型数据库 内存占用小 库文件比较小,小于100K 支持数据库

道郭的博客 433

爬取信用中国里面的行政处罚

result字段名为行政处罚文书号、处罚决定日期、处罚内容、处罚金额、违法事实、处罚机关、公司名称,行政处罚次数。file_path=r'E:\Data analyze\python\行政处罚爬虫/'#路径需要按实际修改。writer = pd.ExcelWriter('统计.xlsx')# 写入Excel文件。src_workbook=file_path+r'行政处罚(名单).xls' #表格名称也要更改。# keyword = input("输入爬取的公司全称必须是全称")

qq_42863025的博客 1674

GreenDao数据库的配置

GreenDao的配置 //在你的根build.gradle文件中: buildscript { repositories { jcenter() mavenCentral() // add repository } dependencies { classpath ‘com.android.tools.build:gradle:2.3.3’ classpath ‘org.gre...

Android10001的博客 899

告别Keil4!手把手教你用Keil C51 V9.61编译51单片机代码(附最新激活方法)

本文详细介绍了Keil C51 V9.61在51单片机开发中的全栈升级指南,包括编译速度提升、调试器性能优化和现代开发支持等核心优势。通过智能安装方案、项目迁移实战和新特性深度应用,帮助开发者告别Keil4,大幅提升开发效率。附有最新激活方法和实用技巧,适用于嵌入式开发工程师。

weixin_26886855的博客 420

Python实战:基于PyG和Stable-Baselines3复现柔性车间调度算法(附数据集)

本文提供了一份基于图神经网络与深度强化学习的柔性车间调度实战指南。通过PyTorch Geometric构建异构图表示车间状态,并利用Stable-Baselines3中的PPO算法训练调度智能体,详细介绍了从环境建模、网络设计到训练评估的完整代码实现,帮助开发者构建可复用的工业级智能调度系统。

ansible6ops的博客 608

GreenDao概要

一、关于GreenDao greenDao应该算是当前最火的数据库开源框架了,它是一个将对象映射到SQLite数据库中的轻量且快速的ORM(object / relational mapping)解决方案。  关于greenDAO的其他相关信息可以看官网greenDAO 二、GreenDao理解 DAO的core library中有以下几个核心类,也是后面常用到的,先来大概了解

道的博客 474

Power Automate Desktop实战:一键自动登录Chrome网站

本文详细介绍了如何使用Power Automate Desktop实现Chrome网站的一键自动登录,提升工作效率。从环境准备、基础配置到高级技巧与异常处理,全面解析自动化登录流程的构建与优化,特别适合需要频繁登录多个系统的用户。

weixin_29231725的博客 467

GreenDao使用记录

普通的APP做持久化保存,最便捷的就是使用数据库。现在使用Android提供的数据库进行CURD的不多,我选择了GreenDao,这里我只说怎么用,原理我也不懂。 基本使用 1.查看GitHub完成基本的配置。 2.了解一些基本的注解的使用。 @Entity 实体注解,为greendao指明这是一个需要映射到数据库的实体类,也就是一个@Entity就是一张表。 @Id 主键,选择使用long...

kim 531

微型纵向加密在新能源场站中的实战部署与运维避坑指南

本文详细解析了微型纵向加密在新能源场站中的实战部署与运维技巧。通过国密算法SM4实现数据加密,确保新能源场站通信安全,同时提供非侵入式部署方案和运维避坑指南,帮助提升网络稳定性和运维效率。

weixin_30505225的博客 598

Python处理高光谱数据#3 降维

基于Python的高光谱降维操作 高光谱数据:点击此处可下载 用到的库:matplotlib、scipy、spectral 主要内容:主成分分析(PCA)与线性判别(LDA) 欢迎有兴趣的朋友交流指点。最后,废话不多说直接上代码???? import matplotlib.pyplot as plt from scipy.io import loadmat import spectral as spy

qq_273058791的博客 6938

GreenDao的使用以及一些细节的总结

GreenDao 一简介 一greenDao的配置 projectbuildgradle appbuildgradle 二使用 配置注解映射实体类 获取DaoSession对数据进行操作 细节问题 凡是涉及ID的一定要使用Long类型的包装类 关联实体的类的getset方法一定要使用GenerateGreenDao一、简介GreenDao是一个对象映射数据解决方案的快速开发框架,很多sql语句直

iszengmh的博客 1275

4、硬件工程师笔试面试知识器件篇——电阻(2025版本)

本文系统介绍了电阻的基础知识与应用。首先阐述了电阻的定义、工作原理及类型(固定/可变电阻),详细说明了常见电阻材料(碳膜、金属膜、线绕等)的特性与标记方法。重点分析了电阻在电路设计中的关键参数:功率计算需考虑1.5-2倍安全裕度,温度系数影响电路稳定性。文章还对比了不同封装形式(轴向/贴片/功率封装等)的适用场景,特别强调高功率电路需选择专用封装并做好散热设计。最后指出电路仿真可优化电阻选择,并列举了相关电子元件在设计中同样需要仿真验证。全文为硬件工程师提供了电阻选型的实用指导。

XU157303764的博客 5210

Android 简单使用 GreenDao3.0

GreenDao的使用 1、在project的build.grade文件中添加如下依赖 classpath 'org.greenrobot:greendao-gradle-plugin:3.0.0' 2、在app的build.grade文件中添加如下依赖 compile 'org.greenrobot:greendao:3.0.1' compile 'or...

qinxuexiang_blog的博客 4015

地平线J6的基础简介

地平线J6M芯片:面向中阶辅助驾驶市场的高性价比芯片

weixin_43084908的博客 4460

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

GreenDao3.0的使用

前言之前用的还是GreenDao的2.x版本,总体感觉来时是比较难用的,而且唯一不能接受的是新建一个Java项目,然后再项目中配置各个实体的字段等相关属性,然后生成实体以及DAO操作相关的一些类。但是,当你修改了实体中的一些属性,并且这些属性又要在数据库中保存的时候,你会发现每次重新运行generator之前的改变都得重新再来一次。不过作者新发布的GreenDao3的话用了大量的注解,省去了新建项目

Chaosminds的博客 1064

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

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

GreenDao3.0简单使用

greenDAO 优势 1、一个精简的库 2、性能最大化 3、内存开销最小化 4、易于使用的 APIs 5、对 Android 进行高度优化 Greendao3.0 最主要的三大改变: 换包名 实体注解 加密支持的优化 GreenDao 3.0使用: GreenDao 3.0采用注解的方式来定义实体类,通过gradle插件生成相应的代码。 GreenDao3

初来乍到 2061

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Android Studio 简单使用 GreenDao3.0

Android Studio 简单使用 GreenDao3.0 据说现在很流行GreenDao框架,所以也抽空了解一下,可恨啊,刚看到的时候在百度上查询的就是GreenDao,然后很不幸的去走老版本的套路,麻麻烦烦的创建java工程,生成那四个文件,还为此查找了网上留存的不少的方法,今天的时候,再次搜索GreenDao的时候 ,发现有一个信息后面带了3.0这个版本号,查阅之后,只能暗自拍一拍大腿……

半把秋风的博客 7178

GreenDao3.0的项目搭建及简单使用

GreenDao2.+时,使用GreendDao,需要另外创建一个Java项目,来生成DaoMaster,DaoSession,Dao,3.0之后依然可以另建项目来创建,不过,这些可以在一个Android项目之中完成了,而且3.0之后,采用注解来对实体进行定义,创建表,定义表的字段属性,加快创建表的速度。官方文档参考 具体实现:以下例子是在一个Android项目中创建表,并开发相关功能,不另外创

王公子 2698

greenDao3.0 的基本使用

greenDao3.0 的基本使用前言:greenDao是一个将对象映射到SQLite数据库中的轻量且快速的ORM解决方案。greenDao3.0 相对于2.0版本使用起来更简单易懂,大大降低学习成本。 如果要详细了解的小伙伴可以访问greenDao的官方地址:greenDao优势: 访问速度快. 易于使用的api. 内存消耗较少. 支持数据库加密. 库精简,从而避免65535的大小限制. 集成

u010041075的专栏 1735

GreenDao3的初步使用

1.GreenDao简介。 现在程序中对于数据库的操作是必不可少的,而且占据整个程序的重要一个部分。而程序员掌握数据库的操作是很重要的一项技能,但是数据库的代码往往重复性很高,一遍遍的重复着相同的操作步骤并不是很明智的选择。这时候一个ORM框架就显得极为重要了,一个好的ORM框架可以为程序的开发节省大量的时间,并且好的框架还能够发挥出更大的性能和效率,所以如果并没有过硬的技术,去选择一个良好的O

繁城落叶 2669

Android ORM框架 GreenDao3.0的使用

前言之前用过许多的Orm框架,例如:ORMLite、greendao、ormndroid、androrm、ActiveAndroid,SugarORM等等,不过都没有一一研究,感觉GreenDao的文档和支持率比较高,所以就一直采用了GreenDao作为项目的Orm框架,关于这些框架的大致分析,可以看我Csdn的文章Android Orm框架分析 ,回到正题,我之前用的还是GreenDao的2.x版

戴定康的博客 1201

Greendao v3.0 使用说明

GreenDao v3.0的简单使用说明:增.删.改.查

听音乐@的博客 3134
上一篇: 设计模式学习笔记之装饰者模式
下一篇: GreenDAO 使用小结
觅己
博客等级 码龄11年 1粉丝 6原创
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值