位置: 编程技术 - 正文

Android ORM之GreenDao学习

编辑:rootadmin
GreenDao文章来源:小小懒羊羊个人知识管理库

推荐整理分享Android ORM之GreenDao学习,希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:,内容如对您有帮助,希望把文章链接给更多的朋友!

GreenDao是Android当中的高性能ORM框架。(其他的有OrmLite等)项目地址: Code Generator:GreenDao的核心类及其工作如下:

使用初始化

使用greendao添加greendao.jar;(使用greendao-generator则需要添加greendao-generator.jar与freemarker.jar这一点在以后讲)相关jar包可以通过maven中央仓库下载。

数据模型与代码生成

完整示例:

GenConfig.java

一般情况下,你使用GreeDao需要创建两个项目,一个是你的Android项目添加greendao.jar依赖,另外一个是普通的java se工程.添加greendao-generator.jar与freemarker.jar依赖。后者用于数据模型domain,dao,DaoMaster等代码的生成。DoMaster与DaoSession及XxxDao以及实体类均会生成。DoMaster与DaoSession对应于你当前的数据模型。这两个类中每个数据模型生成的方法均不同数据模型代码生成示例-使用greendao-generator:

GenConfig.java

Schema代表你的数据库,Entity代表你要生成的数据表结构。向Entity添加属性相当于添加列结构。

注意:../DaoExample/src-gen路径必须存在否则会报错模型化实体Entities

Schema:Entity

Schema可以用于添加Entity:Entity user = schema.addEntity(“User”); 为实体添加属性:user.addIdProperty(); user.addStringProperty(“name”); user.addStringProperty(“password”); user.addIntProperty(“yearOfBirth”);

为实体添加主键

注意:greendao的主键支持目前并不完善,还处于开发中,但是我们可以使用下面的方式添加主键:

关于Java属性与对应的数据库表名列名命名的规则与区别

Java中属性一般采用驼峰命名法。你可以通过Entity.setTableName修改表名

表名/domain类名属性/列I JavaUsername数据库USERNAMEInheritance, Interfaces, and Serializable

对于继承:(不推荐)myEntity.setSuperclass(“MyCommonBehavior”); 推荐使用接口将一些公共的属性提取出来。entityA.implementsInterface(“C”); entityB.implementsInterface(“C”); entityB.implementsSerializable();

触发代码生成Android ORM之GreenDao学习

DaoGenerator daoGenerator = new DaoGenerator(); daoGenerator.generateAll(schema, “../MyProject/src-gen”); 还可以指定第三个参数来将test代码分开。

Keep sections片段

由于GreenDaoGenerator会在每次运行后覆盖原有的生成的实体代码,为了允许添加兵保留你自定义代码到你的实体当中,greendao使用“keep sections”来允许你添加,但是要先调用Schema的enableKeepSectionsByDefault()或者setHasKeepSections(true) .运行generator之后就会在生成的实体类当中生成如下注释,我们只需要往这些注释中添加自定义代码以后每次运行generator后都会保留这部分代码。

不要删除这些注释。SessionsDaoMaster and DaoSession

注意数据库连接是属于DaoMaster的,每个Session都需要分配内存,对于实体,greendao采用对应的session缓存cache

Identity scope and session “cache”

greendao默认的行为是多个不同的查询返回同一个java objects,举例:从USER表中加载一个ID为的对象,结果对于每一个查询都会返回同一个java对象。另一个作用就是缓存实体。greendao是用weak reference在内存中保存实体,所以当再次加载时,greendao不会从数据库加载,而是直接返回该session缓存中的对象。

注意:一旦需要对其进行更改,及时你提交到了数据库,但是缓存中的对象数据仍然没有更新,这个时候需要你手动进行更新缓存中的对象。切记!!!多表关系映射To-One

相当于外键关系。

这将导致产生的User实体类中有一个Picture属性(getPicture/setPicture);

Relation Names and multiple Relations

每一个关联都有一个名称。默认情况下关联的名称就是目标实体的名称。所以一般情况下建议主动设置该关联的名称以免重名。可以通过setName()来设置。

Resolving and Updating To-Many Relations

To-Many解析第一次使用懒加载,但是一旦加载之后to-many list就会被缓存到一个List当中,后续的请求不会再通过数据库,而是直接从缓存中返回,所以一旦修改之后,需要对缓存中的数据进行更新。由于缓存的作用下面的代码会产生令人困惑的结果:

所以我们需要对缓存进行Updating改正后的代码如下:

但是如果有个时候这些没法达到你预期的要求或者是更新缓存比较困难的情况下,没关系greendao还提供如下方法resetXxx()重置缓存:

双向关联To-One与To-many结合使用Many-to-Many Relations (n:m)目前greendao还没有实现。Modelling Tree Relations

You can model a tree relation by modelling an entity having a to-one and a to-many relation pointing to itself:

Android 应用的动画实践--View Animation篇 前言尝试搜索了一下android动画的中文资料,很多都是一些枯燥的翻译api的一些文档,很少有系统讲解如何利用动画开发一个应用的资料,忽然,发现很

Android 通知栏Notification的整合 全面学习 (一个DEMO让你完全了解它) 在android的应用层中,涉及到很多应用框架,例如:Service框架,Activity管理机制,Broadcast机制,对话框框架,标题栏框架,状态栏框架,通知机制,ActionB

android上开源项目、酷炫的交互动画和视觉效果 android上开源的酷炫的交互动画和视觉效果交互篇1.SlidingUpPanelLayout2.FoldableLayout3.android-flip4.SwipeBackLayout5.AndroidImageSlider6.Android-ParallaxHeaderViewPager7.FragmentTran

标签: Android ORM之GreenDao学习

本文链接地址:https://www.jiuchutong.com/biancheng/386750.html 转载请保留说明!

上一篇:Android 自定义侧滑菜单(android实现侧边栏)

下一篇:Android 应用的动画实践--View Animation篇(android的动画有哪些?)

  • 增值税有哪些二类税种
  • 一般纳税人内账税金的处理
  • 小规模纳税人收到专票可以抵扣吗
  • 未按规定缴纳保险
  • 建筑业预缴增值税怎么填纳税申报表
  • 生产成本怎么计算
  • 税务处理决定书与税务处罚决定书
  • 研发费用可以列支成本吗
  • 房地产行业企业所得税政策
  • 个税上个月没报下个月累计会怎么样
  • 税务局季度报表怎么做
  • 外贸公司进项票要专票还是普票
  • 电子设备残值率的最新规定
  • 政府基金如何开票
  • 小企业会计准则适用于哪些企业
  • 通过扣缴义务人和综合申报哪个好
  • 先征后返的所得税账务处理
  • 契税计税依据是否包含耕地占用税
  • 给职工买的意外险怎么做账
  • 一般纳税人收到普票如何入账
  • 实收资本印花税最新政策2023年
  • 个体工商户生产经营所得税税率表2021
  • 无票收入后附什么凭证
  • 二千万注册资金是多少
  • 销售收入增加会导致哪些变动
  • 房地产开发企业预收款预缴增值税
  • 网页显示不全怎么回事
  • 电子承兑到期怎样接收
  • 公司银行贷款能贷多少
  • php操作mysql数据库
  • 坏账准备确认条件
  • 宾馆一次性用品有哪些
  • 混凝土简易计税能抵扣么
  • 火车票抵扣进项税怎么申报填写
  • 卷积神经网络结构
  • php curl_setopt
  • 保险公司应收保费汇报范文
  • 付临时工工资需要什么材料
  • 企业为什么一定要签三方
  • 个体生产经营所得优惠政策
  • 个体工商户注册需要什么材料
  • 小企业其他应收款坏账处理
  • 注册公司行业分类有多少种
  • 固定资产清理怎么报税呢
  • 其他收益算主营业务收入吗
  • 工业企业取得土地收益
  • 酒店打印要钱吗
  • 劳务费会计分录是什么
  • 防暑降温费是不是必须发
  • 建筑行业如何结算工程款
  • 国家土地补偿款
  • 网上购物没有发票
  • 营业执照以外的算无证经营吗
  • 公司每个月申报怎么报的
  • 公益性捐赠要确认递延吗
  • 主营业务成本可以直接贷银行存款吗
  • 发票保管应由谁保管
  • 年度汇算清缴要补税怎么办
  • 为取得交易性金融资产支付的手续费
  • 当期损益包括哪些科目指的
  • mysql用中文字段
  • 微信昵称带符号图案
  • win7注册表有什么用
  • 苹果发布会最新消息
  • freebsd操作命令
  • win7那些自启可以禁用
  • win7无法启动print spooler服务,错误5
  • win7插u盘电脑没反应怎么回事
  • win8.1备份系统还原
  • Python探索之Metaclass初步了解
  • android内存泄露 工具
  • mysql数据表复制
  • python怎么写爬虫
  • javascript怎么学
  • 要使物体从静止状态转变为运动状态需要对这个物体什么
  • android support包
  • 填了专项附加扣除但没有进行综合年度汇算
  • 举报电话12345管用吗
  • 价税分离计算公式
  • 国家电子税务局江西省电子税务局
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设