快速业务通道

pureQuery内联方法风格简介 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-19
单 10 所示。

清单 10. 将自动生成的值放在一个 Object[ ] 中

Object[] customerArray = new Object[7]; customerArray[0] = "CustomerForGenKey"; customerArray[1] = "US"; customerArray[2] = "Barnaby Street"; customerArray[3] = "Gilroy"; customerArray[4] = "Santa Clara"; customerArray[5] = "62823"; customerArray[6] = "408-273-6568"; insertSql = "INSERT INTO PDQ_SC.customer (Name, Country, Street," +        " City, Province, Zip, Phone) VALUES(?,?,?,?,?,?,?)"; String[] colunmName = new String[] { "cid" }; Object[] output = data.update (insertSql, Object[].class,           colunmName, customerArray);

使用 Hook 接口的可插入式回调机制

com.ibm.pdq.runtime.Hook 接口可用于创建在内联方法之前或之后运行的方法。假设 Silver Castle 开发人员知道他们的产品不能发送给某些国家的客户。对于这里的例子,我们可以假设有发货限制的这些国家是 Costa Rica 和 Australia。Hook 接口使开发人员只需定义一次这样的检查,而不必在每次更新 Customer 表时在多个位置添加代码来检查客户的国家。

当 Data 实例创建时,必须将 Hook 注册到 Data 实例。如果内联方法使用的 Data 对象注册了 Hook,那么当应用程序调用 Data 接口的一个方法时,会出现以下步骤:

在 Data 接口的方法做任何事情之前,先调用注册的 Hook 的 pre() 方法。

被调用方法执行它的工作。

当被调用方法完成所有工作之后,调用注册的 Hook 的 post () 方法。

定义内联方法的 Data 接口包含很多 Connection 对象上的 JDBC 方法,例如 close ()、commit ()、rollback ()、setAutoCommit () 和 getAutoCommit ()。注册的 Hook 的 pre () 和 post () 方法不会包装这些方法。

pre () 和 post () 方法需要使用以下参数来定义:

String methodName: pureQuery 将方法的签名传递给 pre () 方法

Data dataInstance: pureQuery 传递实现 Data 接口的对象

SqlStatementType statementType: pureQuery 传递 SQL 语句的类型(例如 SELECT、UPDATE、INSERT)

Object... parameters: pureQuery 传递传给内联方法的参数

Object returnValue: 将调用值返回给内联方法

pureQuery内联方法风格简介(9)

时间:2011-02-14 IBM Daya Vivek

下面的例子演示了 Hook 接口的使用。Silver Castle 应用程序开发人员在应用程序的一个 HookCall 类中定义 pre() 和 post() 方法。pre() 方法检查输入参数,即客户的国家,看它是否有效,并防止将无效的行插入到数据库中。方法调用的输出可以使用 post() 方法检查。

清单 11. Hook 接口的使用

public static class HookCall implements Hook {   public void pre (String methodName, Data objectInstance,        SqlStatementType statementType, Object... parameters)   {    String country = ((Customer)parameters[0]).country;    If (!statementType.equalsIgnoreCase ("update") ||      !statementType.equalsIgnoreCase("insert")) return;    if (!(country.equals ("Australia") || country.equals ("Costa Rica")) )    throw new DataRuntimeException     ("This Country " + country + " is not part of our customer base");   }   public void post (String methodName, Data objectInstance,    Object retValue, SqlStatementType statementType,    Objec

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站: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号