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);
            } | 
    
就这么简单,所有函数的签名都是一样的,只需要查找替换就可以了!