package org.springframework.samples.jpetstore.dao.ibatis;
import java.util.List;
import org.springframework.dao.DataAccessException;
import org.springframework.orm.ibatis.support.SqlMapClientDaoSupport;
import org.springframework.samples.jpetstore.dao.AccountDao;
import org.springframework.samples.jpetstore.domain.Account;
/**
* In this and other DAOs in this package, a DataSource property
* is inherited from the SqlMapClientDaoSupport convenience superclass
* supplied by Spring. DAOs don't need to extend such superclasses,
* but it saves coding in many cases. There are analogous superclasses
* for JDBC (JdbcDaoSupport), Hibernate (HibernateDaoSupport),
* JDO (JdoDaoSupport) etc.
*
* <p>This and other DAOs are configured using Dependency Injection.
* This means, for example, that Spring can source the DataSource
* from a local class, such as the Commons DBCP BasicDataSource,
* or from JNDI, concealing the JNDI lookup from application code.
*
* @author Juergen Hoeller
* @author Colin Sampaleanu
*/
public class SqlMapAccountDao extends SqlMapClientDaoSupport implements AccountDao {
public Account getAccount(String username) throws DataAccessException {
return (Account) getSqlMapClientTemplate().queryForObject("getAccountByUsername", username);
}
public Account getAccount(String username, String password) throws DataAccessException {
Account account = new Account();
account.setUsername(username);
account.setPassword(password);
return (Account) getSqlMapClientTemplate().queryForObject("getAccountByUsernameAndPassword", account);
}
public void insertAccount(Account account) throws DataAccessException {
getSqlMapClientTemplate().insert("insertAccount", account);
getSqlMapClientTemplate().insert("insertProfile", account);
getSqlMapClientTemplate().insert("insertSignon", account);
}
public void updateAccount(Account account) throws DataAccessException {
getSqlMapClientTemplate().update("updateAccount", account, 1);
getSqlMapClientTemplate().update("updateProfile", account, 1);
if (account.getPassword() != null && account.getPassword().length() > 0) {
getSqlMapClientTemplate().update("updateSignon", account, 1);
}
}
public List getUsernameList() throws DataAccessException {
return getSqlMapClientTemplate().queryForList("getUsernameList", null);
}
}