下面简要介绍各种重要的DAO类:
ConnectionFactory类:这个类与数据库密切相关。这个工厂类用于连接数据库,或者说打开一个数据库的连接。 连接数据库时,这个类要用到getConnection方法,该方法需要三个参数,分别对应于数据库名称、用户名和口令。这些参数将按照POJO的风格映射到类ConnectionProperty中。
public
function getConnection() {
$conn
mysql_connect(ConnectionProperty::getHost(),
ConnectionProperty::getUser(),
ConnectionProperty::getPassword());
mysql_select_db(ConnectionProperty::getDatabase());
$conn){
throw
Exception(
could not connect to database
);
}
return
$conn;
}
Connection类:这个类代表的是单个数据库连接,该连接是通过Connection构造函数引自ConnectionFactory类的。
ConnectionFactory::getConnection();
}
这个类还负责关闭连接以及执行SQL查询。
Transaction类:这个类封装了一组对数据库进行事务性操作的函数。此外,这个类还提供了事务数组,这些事务是通过助手类ArrayList来提供的,其中ArrayList可以通过PHP数组来模拟一个集合。这些事务将使用Connection类所提供的连接。此外,Transaction类的getCurrentTransaction函数提供了对当前事务的访问能力。
QueryExecutor类:这个类为我们提供了执行SQL语句的各种函数。实际上,这些函数都实现了CRUD语法。函数execute可以执行所有的SELECT语句,而函数executeUpdate则执行UPDATE、DELETE和INSERT语句:
static
function execute($sqlQuery){
$transaction
Transaction::getCurrentTransaction();
$transaction){
$connection
Connection();
}
else
{
$connection
$transaction
->
getConnection();
}
$query
$sqlQuery
->
getQuery();
$result
$connection
->
executeQuery($query);
$result){
throw
Exception(mysql_error());
}
$i
;
$tab
array();
while
($row
mysql_fetch_array($result)){
$tab[$i
$row;
}
mysql_free_result($result);
$transaction){
$connection
->
close();
}
return
$tab;
}
public
static
function executeUpdate($sqlQuery){
$transaction
Transaction::getCurrentTransaction();
$transaction){
$connection
Connection();
}
else
{
$connection
$transaction
->
getConnection();
}
$query
$sqlQuery
->
getQuery();
$result
$connection
->
executeQuery($query);
$result){
throw
Exception(mysql_error());
}
return
mysql_affected_rows();
}
{databasename}MySqlDAO类:这是由DAO Generator创建的一个类,它提供了一组特定于某种数据库的DAO函数。生成的类位于generated/class/mysql文件夹内,并且它们的名称是由数据库名称和后缀MySqlDAO结合而成的。在本文的后面,我们将介绍如何生成和使用这个类。
注意,类QueryExecutor和类{databasename}MySqlDAO使用了一个名为SqlQuery的助手类,它封装有表示和存储SQL语句的各种函数。
--转自