从以前所有的博客中可以看出,我们的主要任务是:提供数据??对?->那么请从博客1开始…(让我知道我是否应该解释得更好……
毫无疑问?不?->酷,那我们继续吧。
存储和提供结构化数据的一种有意义的方式是地图更具体:java.util.Map文件它非常适合存储一对propertyName和propertyValue伟大的。不过,SDK还支持另外两种格式:
到目前为止,我们一直将数据存储在地图中,在本博客中我们将对另外两种格式进行介绍。我考虑过创建使用两种格式甚至组合的示例代码。准备好了吗?不?->那么请从blog 1开始
所有其他:让我们从POJO开始
这个术语代表"普通的旧Java对象",在我们的上下文中也是这样使用的。它只是一个简单的Java类,包含成员变量和相应的getter/setter因此,它是存储值(成员变量)和访问它们(getter方法)的非常方便的方法最大的优点是使用方便。直观。和类型安全。
比较:
使用地图:
使用POJO
如您所见,它是更易于使用,处理字符串时不容易出错,没有演员阵容
但是,除了这些明显的优点外,还有一个缺点:代码的创建:创建每个Java类,淘客app系统,键入所有成员、所有getter和所有setter。此外,变量的名称必须与edmx中定义的属性的名称完全匹配。你可能会在输入pojo时变老…
但是不要放弃…
SDK提供了一些神奇的支持,你不会感到惊讶…SDK,我们的好朋友…看看我们的朋友能为我们做些什么:SDK能够基于您的ODataV4模型生成POJO
POJO生成器插入maven构建中,我的意思是:在使用maven构建项目时,maven构建可以生成POJO类。
可以通过在maven命令中添加一个参数来激活生成:
示例:
可能如下所示它看起来更真实:
好的,但是现在是时候把手弄脏了-但是不要太脏,爱返利,因为我们有POJOnator请注意,这不是官方名称!只是我喜欢这样温柔地称呼他……
和往常一样,在创建了一个新项目之后,我们创建了一个模型文件(如果你有疑问,你不需要从头开始,大数据包括,只需要看看这里)。
我想过创建一个没有什么不同工件的模型,因此POJOnator有一些有趣的工作要做:
一旦你创建了你的项目并添加了包含上述内容的xml文件,你就可以开始你的maven初始构建了。
例如:
(这个命令稍微快一点,我们只需要它来生成pojo)
一旦maven构建完成了,您可以在控制台窗口中搜索POJOnator编写的输出
正如您所观察到的,已经为每个OData工件生成了一个Java类。此外,这些类已经生成到一个新的包中。所有的名称都是从模型中派生出来的,包名还考虑了maven pom
您可能希望阅读nice文档以获取更多信息。
maven构建成功后,您可能需要刷新Eclipse项目中的java文件夹,以使生成的类可见。
一旦可见,在我们的示例中,它看起来是这样的:
为了方便起见,我创建了下面的屏幕截图,以显示Java类是如何从OData模型派生的。
我拒绝绘制箭头-你可以自己做,作为家庭作业…
POJO看起来是什么样子?
让我们来看看POJO例如persone.
我们可以看到:
实体类型
Java类的名称与实体类型的名称匹配,并附加后缀ET为每个OData属性生成了一个Java成员变量每个变量的名称与对应的OData属性的名称完全相同请注意,它区分大小写我们可以看到有一个注释:它标记哪些成员变量对应于key属性getter和setter也生成得很好。这对我们很重要,因为我们将大量使用它们。数据类型也根据OData数据类型生成。匹配的数据类型可以参考docu
实体集
与实体集对应的POJO的名称再次具有相同的名称,但附加了ES。原因是在OData中,实体类型和实体集的名称可以相等。此外,可以有多个实体集指向同一实体类型。这就是为什么我们需要实体集的额外pojo。但是,为了避免冗余,实体集pojo是实体类型pojo的子类
复杂类型
复杂类型也是数据结构,因此将其视为实体类型。它没有键注释上面的实体类型使用复杂类型,所以POJO有一个AddressCT类型的成员变量,它是为复杂类型生成的POJO。
这不是很好吗?正如我们预期的那样,
导航属性
如果是$expand,可以填写导航属性的Java变量。成员变量的Java类型取决于OData模型中导航属性的关系。在下面的示例中,我们可以看到特定于多关系的OData是如何在Java中反映的:
如何使用POJO?
我们对待POJO就像对待普通Java类一样:实例化它并使用setter用数据填充POJO:
将此代码片段与使用映射的备选代码片段进行比较:
对于每个值,我们必须键入(正确!)属性的名称-在这里没有POJOnator可以帮助我们…
现在让我们比较@Query实现:
首先使用Map和setDataAsMap(List)方法的列表
现在使用POJO,我们传递一个POJO列表并使用另一个setData()方法
我相信现在已经很清楚了,您可以在本页末尾找到完整的源代码。(如果不清楚,请从…开始,并让我知道…