public void setActkwd(String actkwd ) {
this.actkwd = actkwd;
}
public String getActdesc() {
return actdesc;
}
public void setActdesc(String actdesc ) {
this.actdesc = actdesc;
}
}
集成Spring Framework和Data Studio(3)
时间:2011-03-06 IBM Chipei Michael Hsing
DAO 接口
DAO 接口声明了可以通过应用程序调用的方法。在清单 2 所示的简单示例中只定义了一个方法 getAccounts(),这个方法可以获取所有来自 ACT 表的行。
清单 2. AccountData.java
package com.test;
import java.util.List;
public interface AccountData {
public String sql = "SELECT * from act";
public List<Account> getAccounts();
}
DAO 实现
通过 DAO 实现可以实现在接口中声明的方法。在这个示例中,只有一个需要实现的方法 getAccounts(),但仍然需要添加模板 JDBC 代码,以:
获得数据库连接
捕获 SQL 异常
遍历结果集
清空资源,比如连接、语句或结果集
清单 3 展示了 getAccounts() 方法的 DAO 实现。
清单 3. AccountDao.java
package com.test;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class AccountDao implements AccountData{
public List<Account> getAccounts()
{
List<Account> actList = new ArrayList<Account>();
Account act = null;
try{
Connection con = getConnection();
Statement st = con.createStatement();
ResultSet rs = st.executeQuery(sql);
while (rs.next()){
act = new Account(rs.getShort("ACTNO"),
rs.getString("ACTKWD"),
rs.getString("ACTDESC") );
actList.add(act);
}
rs.close();
st.close();
con.close();
return actList;
}
catch (SQLException sqle){
throw new RuntimeException(sqle);
}
}
private Connection getConnection() throws SQLException {
String driver = "com.ibm.db2.jcc.DB2Driver";
String url = "jdbc:db2://localhost:50000/sample";
try{
Class.forName(driver);
}catch(Exception e){
e.printStackTrace();
}
// Replace USERNAME and PASSWORD with your own data
Connection con = DriverManager.getConnection(url,"USERNAME","PASSWORD");
return con;
}
}
集成Spring Framework和Data Studio(4)
时间:2011-03-06 IBM Chipei Michael Hsing
应用程序
应用程序首先实例化一个 DAO 对象,然后调用 getAccounts() 方法并将结果输出到控制台。清单 4 展示了在实例化 DAO 对象之后调用 getAccounts() 方法的应用程序。
清单 4. AccountApp.java
package com.test;
import java.util.List;
public class AccountApp {
public static void main(String [] args) {
AccountData accountData = new AccountDao();
List<Account> actList = accountData.getAccounts();
for (Account act : actList)
System.out.println(" ACTNO=" + act.getActno() +
" ACTKWD="+ act.getActkwd() + " ACTDESC="+act
|