WEB开发网
开发学院软件开发Java Go-ForIt 记事:eXtreme ragonSlayers 专题报告,... 阅读

Go-ForIt 记事:eXtreme ragonSlayers 专题报告,第 10 部分: 使用定制查找器方法检索不同的结果集

 2009-11-06 00:00:00 来源:WEB开发网   
核心提示: 另一个查找器方法...publiccom.goforit.ejb.ErrandfindNewestErrand()throwsjava.rmi.RemoteException,javax.ejb.FinderException;publicjava.util.EnumerationfindAll


另一个查找器方法
  ... 
  public com.goforit.ejb.Errand findNewestErrand() 
   throws java.rmi.RemoteException, javax.ejb.FinderException; 
  public java.util.Enumeration findAllErrands() 
   throws java.rmi.RemoteException, javax.ejb.FinderException; 
  public java.util.Enumeration findRecentErrands(int arg0) 
   throws java.rmi.RemoteException, javax.ejb.FinderException;  
  public com.goforit..... 

这个查找器的 WHERE 子句相当简单。在下面的样本中, WHERE 子句使用 ? 作为查找器方法的输入参数的占位符。在这个例子中,findRecent Errands 方法中 arg0 的值将被替换到 SQL 语句中。结果集将包含所有差事标识大于传递给该方法的整数的差事。


FinderHelper 接口示例
public interface ErrandBeanFinderHelper { 
 public final static String findNewestErrandWhereClause = 
 "ERRANDID = (SELECT MAX(ERRANDID) FROM GOFORIT.ERRAND)"; 
 public final static String findAllErrandsWhereClause = 
 "1 = 1"; 
 public final static String findRecentErrandsWhereClause = 
 "ERRANDID > ?"; 
 } 

persister 类

我们还要考虑另一个难题。您需要为将要使用的数据库表定义一个 EJSJDBCPersister 类型的类。这个类有几个关键之处。第一个是要使用的表的定义。下面的代码样本显示了类的定义和表的别名定义。


persister 类示例
.... 
public class EJSJDBCPersisterErrandBean extends EJSJDBCPersister 
  implements EJSFinderErrandBean, VapEJSJDBCFinderStatementHelper { 
 final static String[] createTableSqlStrings = { 
 "CREATE TABLE goforit.Errand ( status VARCHAR(30), 
   description VARCHAR(30), category VARCHAR(30), 
   errandid INTEGER NOT NULL, subcategory VARCHAR(30), 
   duedate DATE, timestamp VARCHAR(30), comments VARCHAR(1024), 
   User_userid VARCHAR(30) NOT NULL)", 
  "ALTER TABLE goforit.Errand ADD CONSTRAINT ErrandPK PRIMARY KEY ( errandid)" 
 }; 
.... 

第一个字符串定义了表,第二个字符串定义了键。您还必须指定一些缺省信息,如下所示。


persister 类示例
.... 
 final static String genericFindSqlString = 
   "SELECT T1.status, T1.description, T1.category, T1.errandid, 
   T1.subcategory, T1.duedate, T1.timestamp, T1.comments, 
   T1.User_userid FROM goforit.Errand T1 WHERE "; 
.... 

这个字符串定义了查询字符串的前半段。我们的 WHERE 子句将被附加到这个字符串以创建一个完整的 SQL 查询。注意还需要在 EJSJDBCPersister 中提供一些其它定义;一条 update 语句、一条 delete 语句,如果希望支持多个数据库,还需要提供各种数据库类型的其它表定义。

总结

定制查找器助手允许应用程序与 EJB 容器一起工作来访问适当的 EJB。FinderHelper 类让您帮助容器从数据库检索适当的信息。我希望本文对这些有用的类和方法的介绍会对您有所帮助。

上一页  3 4 5 6 7 8 

Tags:Go ForIt 记事

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接