博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
greenDAO系列4--构建模型
阅读量:6916 次
发布时间:2019-06-27

本文共 2386 字,大约阅读时间需要 7 分钟。

hot3.png

    在项目中使用greenDAO的第一步是创建实体模型,实体模型代表你应用中会使用到的持久化数据。基于该模型,greenDao生产DAO类相关的java代码。

     该模型本身是通过java代码来定义的。它很简单:参考DaoExampleGenerator项目,创建一个java项目。详情可查看“如何开始”的章节。

11194818_dfN5.png

    上图描述构建实体的相关类,你可以使用这些类描述你的特定模型。

模式(Schema)

    实体(entity)属于一个模式(schema)。模式是你需要定义的第一个对象。调用其构造方法,传入其模式版本(数据库版本)和默认Java包。

Schema schema = new Schema(1, "de.greenrobot.daoexample");

    当greenDAO生成entities,DAOs和JUnit测试时会用到缺省包名。如果在项目中它们都采用缺省值,你现在就已经完成了第一步。 如果你想将DAO和测试类放在指定的包名,可以如下设置schema:

schema.setDefaultJavaPackageTest("de.greenrobot.daoexample.test");schema.setDefaultJavaPackageDao("de.greenrobot.daoexample.dao");

    schema中还有两个实体缺省标识可以设置。分别表示实体为主动和使用保留片段。这些特性文档中没有说明,可以看看项目的测试代码:

schema2.enableKeepSectionsByDefault();schema2.enableActiveEntitiesByDefault();

实体

    实体中有几个设置你可以改变,最重要的是你可以添加实体属性(properties):

user.addIdProperty();user.addStringProperty("name");user.addStringProperty("password");user.addIntProperty("yearOfBirth");

    除了属性,还可为该实体添加to-one和to-many关系。

属性和主键

    上一节展示了如何添加属性到实体。实体类的addXXXProperty方法返回PropertyBuilder对象,可用于配置属性。例如,用columnName方法自定义字段名。创建索引或关系时需要访问属性对象,可调用PropertyBuider对象的getProperty()方法获取。

    主键限制:目前,实体必须有一个long或Long类型的属性作为主键。这是Android和SQLite的推荐做法。greenDAO未来将支持更多的主键方案,但未必完全支持。一种变通的方法:你可使用long类型的主键和用一个唯一索引为真正“意图”的主键。

缺省

    greenDAO尽量使用合理的缺省值,故开发者无需处处都设置。如数据库的表名和字段名源于实体和属性的名字。数据库缺省命名,不使用java的驼峰命名风格,而是全部大写且用下划线分割单词。如:属性名为“creationDate”将变成数据库字段“CREATION_DATA”。

关系

    To-one和to-many关系的具体说明可查看“关系”章节。

继承,接口和序列化

    实体类可以继承非实体类。其父类可以通过setSuperclass(String)方法指定(注意:目前不可能有一个实体类作为作为其他实体类的父类)。举例:

myEntity.setSuperclass("MyCommonBehavior");

    通常最好使用接口作为实体的公共基础属性和行为。如:实体A和B公共拥有一组属性,这些属性可以定义在接口C,如下例子,同时设置实体B为可序列化:

entityA.implementsInterface("C");entityB.implementsInterface("C");entityB.implementsSerializable();

进行生成

    schema定义好后,便可进行代码生成。在生成器项目(一个有静态main方法的Java项目)中,初始化DaoGenerator并调用generateAll方法。

DaoGenerator daoGenerator = new DaoGenerator();daoGenerator.generateAll(schema, "../MyProject/src-gen");

    只需指定schema类和一个目标目录,通常是一个Android项目的源文件夹,如果测试类在另外一个目录,可在第三个参数指定。

保留片段

    通常,实体类每生成一次都会被覆盖。greenDAO可以在实体类中保留自定义的代码片段。使其生效,可在schema调用enableKeepSectionsByDefault()或对实体调用setHasKeepSections(true)。一旦生效,三个保持片段就会在代码中生成:

// KEEP INCLUDES - put your custom includes here// KEEP INCLUDES END...// KEEP FIELDS - put your custom fields here// KEEP FIELDS END...// KEEP METHODS - put your custom methods here// KEEP METHODS END

    现在便可将你自定义代码放在KEEP [...] 与 KEEP [...] END之间。不要修改KEEP部分的注释。KEEP之间的代码在代码生成过程中会保留。

转载于:https://my.oschina.net/rVaAlxJLK31TP/blog/312590

你可能感兴趣的文章
利用PXE实现无人值守安装Linux操作系统
查看>>
linux系统文件权限
查看>>
Foxmail设置方法
查看>>
#pragma once与 #ifndef的区别
查看>>
Spark排错与优化
查看>>
关于Java线程状态
查看>>
详解DNS的常用记录(上):DNS系列之二
查看>>
重定向与管道
查看>>
redhat6.1 X86-64 使用centos的源做yum
查看>>
闭包那一点事
查看>>
开源文化
查看>>
shell 中eval运用
查看>>
Scala之旅-class和object详解
查看>>
DNS服务的搭建 windows server 2008
查看>>
mysql报错err1055
查看>>
OpenStack 学习笔记(六):OpenStack neutron服务搭建
查看>>
shell中的算数比较
查看>>
quota(linux下的磁盤配額)
查看>>
【MySQL数据库开发之四】MySQL 处理模式/常用查询/模式匹配等
查看>>
Linux NFS服务器配置
查看>>