例:人员记录
该例是关于行数据入口的例子。是一张简单的人员表:
create table people (ID int primary,lastname varchar, firstname varchar, number_of_dependents int)
PersonGateway类是表的入口,以域和成员方法开始:
class PersonGateway {
private String lastName;
private String firstName;
private int numberOfDependents;
public String getLastName(){
return lastName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getFirstName(){
return firstName;
}
public void setFirstName(String firstName){
this.firstName = firstName;
}
public int getNumberOfDependents(){
return numberOfDependents;
}
public void setNumberOfDependents(int numberOfDependents){
this.numberOfDependents = numberOfDependents;
}
...
}
入口类自身能处理更新和插入操作(使用Register注册表表示标志映射):
class PersonGateway {
...
public void update(){
String sql = "UPDATE people SET lastname=?, firstName=?,numberOfDependents=? where id=?";
PreparedStatement stmt = null;
try {
stmt = DB.prepareStatement(sql);
stmt.setString(1,lastName);
stmt.setString(2,firstName);
stmt.setInt(3,numberOfDependents);
stmt.setInt(4,getID().intValue());
stmt.execute();
}
catch ...
finally ...
}
public Long insert(){
String sql = "INSERT INTO people VALUES (?,?,?,?)";
PreparedStatement stmt = null;
try {
stmt = DB.prepareStatement(sql);
stmt.setInt(1,getID().intValue());
stmt.setString(2,lastName);
stmt.setString(3,firstName);
stmt.setInt(4,numberOfDependents);
stmt.execute();
register.addPerson(this);
return getID();
}
catch ...
finally ...
}
...
}
我们为了从数据库中读取人员信息,设置了一个独立的PersonFinder类。
PersonFinder类和PersonGateway类一起创建新的入口对象。