我目前用的MyBatis-Spring集成框架的工作,這就是我的文檔閱讀:MyBatis映射器直接注入服務類。例外情況如何?
而不是使用手動SqlSessionDaoSupport或SqlSessionTemplate, MyBatis的彈簧代碼數據訪問對象(DAO)提供代理工廠:MapperFactoryBean。這個類允許你將數據映射器接口 直接注入到你的服務bean中。使用映射器時,您只需調用它們,因爲您始終將其稱爲 DAO,但您不需要編寫任何DAO實現,因爲MyBatis-Spring將爲您創建 的代理。
這是一個非常不錯的功能......但什麼異常處理?我應該在哪裏翻譯SQL錯誤?在我的服務層?但是它不會違反服務-DAO模式嗎?
例子:
public final class AccountServiceImpl implements AccountService {
(...)
private AccountMapper accountMapper;
(...)
@Override
public void addAccount(Account account) throws AccountServiceException {
//Validating, processing, setting timestamps etc.
(...)
//Persistence:
int rowsAffected;
try {
rowsAffected = accountMapper.insertAccount(account);
} catch (Exception e) {
String msg = e.getMessage();
if (msg.contains("accounts_pkey"))
throw new AccountServiceException("Username already exists!");
if (msg.contains("accounts_email_key"))
throw new AccountServiceException("E-mail already exists!");
throw new AccountServiceException(APP_ERROR);
}
LOG.debug("Rows affected: '{}'", rowsAffected);
if (rowsAffected != 1)
throw new AccountServiceException(APP_ERROR);
}
是否確定翻譯服務層異常?
應該怎麼做?
在此先感謝您的建議。
非常好的答案!謝謝! – 2012-01-04 15:11:59