我正試圖學習如何在Spring 2.5.6中執行CRUD操作。我在我的數據庫中創建了一個名爲公司的表格,其中有兩個字段:id和name。我想要做的是使用id字段從表中檢索一行。這是我爲它做的。如何檢索數據庫中的行並將其轉換爲Spring中的對象?
public class JdbcCompanyDao extends SimpleJdbcDaoSupport implements CompanyDao {
protected final Log logger = LogFactory.getLog(getClass());
public Company getCompany(int id) {
logger.info("Getting company with id = " + id);
Company company = getSimpleJdbcTemplate().queryForObject(
"SELECT id, name FROM companies WHERE id = " + id,
new CompanyMapper());
return company;
}
private static class CompanyMapper implements ParameterizedRowMapper<Company> {
public Company mapRow(ResultSet rs, int rowNum) throws SQLException {
Company company = new Company();
company.setId(rs.getInt("id"));
company.setName(rs.getString("name"));
return company;
}
}
}
我做了一個單元測試它來檢查,如果我這樣做是正確的:
public class JdbcCompanyDaoTests extends AbstractTransactionalDataSourceSpringContextTests {
private CompanyDao companyDao;
public void setCompanyDao(CompanyDao companyDao) {
this.companyDao = companyDao;
}
@Override
protected String[] getConfigLocations() {
return new String[] {"classpath:test-context.xml"};
}
@Override
protected void onSetUpInTransaction() throws Exception {
super.deleteFromTables(new String[] {"companies"});
super.executeSqlScript("file:db/load_data.sql", true);
}
public void testGetCompany() {
Company company = companyDao.getCompany(1);
assertEquals("SomeRandomCompany", company.getName());
}
}
當我運行測試,我得到以下錯誤:
org.springframework.dao.EmptyResultDataAccessException: Incorrect result size: expected 1, actual 0
我可以找不到getCompany()返回空結果集的原因。現在,我不知道我需要做什麼,我仍然對Spring的工作方式感到困惑。這與AbstractTransactionalDataSourceSpringContextTests如何工作有關嗎?
旁邊的問題:有沒有什麼好的資源可以演示如何在Spring中執行CRUD操作?到目前爲止,我擁有的唯一資源是this和this,他們並沒有提供足夠的例子讓我做任何事情。
請問如果你改變onSetUpInTransaction()來onSetUp()工作? – Ritesh 2011-02-24 09:30:33
@Ritesh,不。我只是按照我在教程中看到的內容(http://static.springsource.org/docs/Spring-MVC-step-by-step/index.html)嘗試添加一些我自己的。除了我的測試方法外,教程中的所有內容都可以工如果你想知道的話,當我把它們粘貼到這個問題上時,我會從這兩個類中刪除其他方法,因爲它們是有用的,這些方法都是不相關的,並且是教程的一部分。 – 2011-02-24 09:36:00
爲什麼從Spring 2.5開始Spring 3已經過了一年了? – 2011-02-24 10:50:44