Я пытаюсь научиться выполнять операции CRUD в Spring 2.5.6. Я сделал таблицу в моей базе данных под названием компании, которая имеет 2 поля: идентификатор и имя. Я хочу извлечь строку из таблицы, используя поле id. Это то, что я сделал для этого.
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:
Неверный размер результата: ожидается 1,
фактический 0
Я не могу найти причину, по которой getCompany () возвращает пустой набор результатов. Сейчас я понятия не имею, что мне нужно делать, и я все еще не понимаю, как работает Spring. Это как-то связано с тем, как AbstractTransactionalDataSourceSpringContextTests работает?
Дополнительный вопрос: есть ли хорошие ресурсы, которые демонстрируют, как выполнять операции CRUD в Spring? Пока что у меня есть только ресурсы: , это и , это , и они не дают достаточно примеров, чтобы я мог что-то сделать.