3.4. 持久层在讨论业务层之前,我们先看一下持久层,如下图所示:
在上文中,我们把iface包下的DAO接口归为业务层,在这里不需要做修改。ibatis的sql配置文件也不需要改。要改的是DAO实现类,并在spring的配置文件中配置起来。
1、修改基类
所有的DAO实现类都继承于BaseSqlMapDao类。修改BaseSqlMapDao类如下:
public class BaseSqlMapDao extends SqlMapClientDaoSupport
{
protected static final int PAGE_SIZE = 4;
protected SqlMapClientTemplate smcTemplate
= this.getSqlMapClientTemplate();
public BaseSqlMapDao()
{
}
}
|
使BaseSqlMapDao类改为继承于Spring提供的SqlMapClientDaoSupport类,并定义了一个保护属性smcTemplate,其类型为SqlMapClientTemplate。
2、修改DAO实现类
所有的DAO实现类还是继承于BaseSqlMapDao类,实现相应的DAO接口,但其相应的DAO操作委托SqlMapClientTemplate来执行,以AccountSqlMapDao类为例,部分代码如下:
public List getUsernameList()
{
return smcTemplate.queryForList("getUsernameList", null);
}
public Account getAccount(String username, String password)
{
Account account = new Account();
account.setUsername(username);
account.setPassword(password);
return (Account)
smcTemplate.queryForObject
("getAccountByUsernameAndPassword", account);
}
public void insertAccount(Account account)
{
smcTemplate.update("insertAccount", account);
smcTemplate.update("insertProfile", account);
smcTemplate.update("insertSignon", account);
}
|
就这么简单,所有函数的签名都是一样的,只需要查找替换就可以了!