快速业务通道

pureQuery带注释的方法风格简介 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
SQL 语句的结果,形式为一个适当格式化的 Java 对象。开发其他应用程序层时,不需要 SQL 方面的知识。

pureQuery带注释的方法风格简介(3)

时间:2011-02-14 IBM Heather Lamb

清单 1. pureQuery 带注释的方法风格的接口

package com.ibm.db2.pureQuery; import java.util.Iterator; import com.ibm.pdq.annotation.Select; public interface CustomerData {   // Select all PDQ_SC.CUSTOMERs and populate Customer beans with results   @Select(sql="select CID, NAME, COUNTRY, STREET, CITY, PROVINCE, ZIP, PHONE,             INFO from PDQ_SC.CUSTOMER")   Iterator<Customer> getCustomers();   // Select PDQ_SC.CUSTOMER by parameters and populate Customer bean with results   @Select(sql="select CID, NAME, COUNTRY, STREET, CITY, PROVINCE, ZIP, PHONE,             INFO from PDQ_SC.CUSTOMER where CID = ?")   Customer getCustomer(int cid);   ... }

生成一个实现

定义好上述接口后,Data Studio 中的 pureQuery 项目工具自动将它提供给 pureQuery 代码生成器。pureQuery 代码生成器产生该接口的一个实现,放在一个名为 CustomerDataImpl.java 的文件中。为便于读者查看,清单 2 中给出了生成的文件。注意:生成的文件中的所有代码(清单 2)都不是由开发人员手动编写的。

您不需要查看生成的代码。如果您想看看 Silver Castle 应用程序如何使用以上接口,可以跳到 下一步。接下来,了解更多关于生成的代码的信息。

代码生成器和生成的代码

代码生成器以用户定义的 pureQuery 接口为输入,例如由 SilverCastles 开发人员定义的简单的 CustomerData。它生成的代码用来执行针对接口中每个方法进行注释的每个 SQL 语句。它还生成用于将结果处理为所声明类型的代码。生成的代码调用 pureQuery 运行时来执行每个方法所需的处理。

关于生成的代码有一些重要的注意事项:

生成的元素:对于每个声明的方法,生成的元素包括方法定义、一个内部 pureQuery StatementDescriptor、一个生成的 RowHandler 或 ResultHandler ,以及一个内部 pureQuery ParameterHandler。

实现类名称:生成的实现文件的名称以初始的用户定义接口的名称为基础,在名称后面加上 “Impl”。在这个例子中,开发人员编写了 CustomerData 接口,代码生成器产生 CustomerDataImpl 类。生成的类实现 CustomerData 接口。数据访问应用程序的其他层不会使用实现类的名称;它们总是引用和使用用户定义接口。但是,知道实现文件的名称还是有用的,以便检查生成的代码。

实现超类:除了实现用户定义接口外,生成的实现类还扩展内部的 pureQuery 类 BaseData,后者实现外部的 Data 接口。这个超类是 pureQuery 运行时的一部分,负责处理访问数据库和处理结果的固定的、重复的操作。

看到生成的代码时,不要感到困惑。开发人员不需要查看这些代码,除非他们执意要这么做。

使用带注释的方法

至此,项目已经构建完毕,Data Studio pureQuery 工具已经调用了 pureQuery 代码生成器,并且接口实现也已经生成并编译。开发人员现在可以通过调用 pureQuery 带注释的接口中声明的带注释的方法,从应用程序的其他层访问数据。这个过程很简单。应用程序通过发送给 DataFactory 的一个请求实例化 pureQuery 接口的一个实例(概念上的数据库)。然后,它调用数据访问方法,如下所示:

清单 3. 调用带注释的方法

... java.sql.Connection con = ...; // use the DataFactory to instantiate the CustomerData interface CustomerData cd = DataFactory.getData(CustomerData.c

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号