持久层(jdbc)
com.dm.database包提供一个简易的数据存储的工具,它建立在jdbc实现与数据库的操作。开发者只需要几行代码就达到数据库的查询、插入、修改等操作。类图
参见 系统结构-数据库组件配置
参见 开发指南-配置数据库数据库连接
系统采用连接池方式预先缓存多条数据库连接。提供两种database和两种executor。database类负责执行各种操作(executor)管理当前数据库连接(connection)。捕获SQLException类外,并负责回滚操作。
database包含两种类型:
- ClosingDatabase,自动获得数据库连接,并且执行一次executor后自动关闭数据库。不支持事务处理。
- OpeningDatabase,有用户建立数据库连接,可以多次执行多个executor,由用户关闭数据库。支持事务处理。
- SqlExecutor,sql文的命令执行器。sql文参数由字符串描述。
- ParamsSqlExecutor,sql文的命令执行器。sql文参数可通过对象传递。
示例代码
ClosingDatabase: SqlExecutor executor = new
SqlExecutor("select sum(charge_points) as total from charge where
username='" + username + "'");
Database database = DatabaseFactory.currentDatabase();
List result = database.executeQuery(executor);
... OpeningDatabase:
SqlExecutor executor1 = new
SqlExecutor("select sum(charge_points) as total from charge where
username='" + username + "'");
ParamsSqlExecutor executor2 = new ParamsSqlExecutor("insert into charge
(charge_date,charge_points,remark,username) values (?,?,?,?)");
executor.addParam(new Date()).addParam(new
Integer(charge.getChargePoints())).addParam(charge.getRemark()).addParam(charge.getUsername());
Database database = DatabaseFactory.currentDatabase(true);
try{
database.open();
List result1 = database.executeQuery(executor1);
...
List result2 = database.executeQuery(executor2);
}catch(DatabaseException e){
database.close();
} 
