Добрый вечер, ребята, я пытаюсь реализовать модель jdbctemplate с контроллером / Service / Dao / DaoImpl / и Mapper ...
Но в моделях, которые я вижу, картограф должен реализовать RowMapper или ParameterizedRowMapper, и оба имеют метод maprow, который не возвращает List. Поскольку мне был нужен список, я реализовал метод в маппере, чтобы получить нужный мне список. но я не знаю как это назвать.
В методе customerList я должен передать CustomerMapper внутри запроса следующим образом:
jdbcTemplate.query (sql, новый CustomerMapper (), id);
И клиентский маппер должен реализовать RowMapper или ParameterizedRowMapper, чтобы
jdbcTemplate.query принимает его и вместе с RowMapper или ParameterizedRowMapper должен прийти метод maprow.
Когда я вызываю метод Mapper через listCustomer при входе в класс CustomerMapper, он автоматически входит в первый метод mapRow и не вводит нужный мне метод listCustomer, который бы возвращал нужный мне список.
Есть идеи, как помочь мне сделать это?
Мне нужно вернуть список клиентов. просто это! Но следуя этой форме реализации ...
Спасибо!
Мой класс:
@Controller
public class CustomerController {
@Autowired
private CustomerService customerService;
@ResponseBody
@RequestMapping(value = "/customer/{id}", method = RequestMethod.GET)
public Map<String, Object> searchCustomer(@PathVariable(value="id") Long id,
final HttpServletRequest request) throws IOException, SQLException {
Map<String, Object> map = new HashMap<String, Object>();
List<Customer> customerList = customerService.searchCustomer(id);
map.put("customer", customerList);
return map;
}
}
SERVICE
@Service
public class CustomerService {
@Autowired
private CustomerDAO dao;
public List<Customer> searchCustomer(Long id) throws SQLException {
return dao.listCustomer(id);
}
}
DAO
public interface CustomerDAO {
List<Customer> listCustomer(Long id);
}
DAOIMPL
public class CustomerDAOImpl implements CustomerDAO {
@Autowired
private SimpleJdbcTemplate jdbcTemplate;
String sql = "SELECT * FROM purchases C WHERE C.ID = ?";
public List<Customer> listCustomer(Long id) {
return jdbcTemplate.query(sql, new CustomerMapper(), id);
}
}
//MAPPER
public class CustomerMapper implements RowMapper<Customer>{
public Customer mapRow(ResultSet rs, int arg1) throws SQLException {
... "N" RULES INSIDE BUT DONT RETURN ArrayList OR LIST.... ANYAWAY..
//THIS METHOD IS INTERFACE INHERITANCE AND HAS TO BE IMPLEMENTED
//BUT I NEED A METHOD THAT RETURNS A LIST OF CUSTOMERS FOR THE CONTROLLER
//AND THEREFORE IT RETURNS JUST 1 CUSTOMER
}
//SO I CREATED THIS OTHER METHOD THAT RETURNS A LIST OF CUSTOMERS AND
//IMPLEMENTED IN THE INTERFACE ... BUT I DO NOT KNOW HOW THE MAPPER CALLS IT ...
//NOT MAPROW
public List<Customer> listCustomer(ResultSet rs, int arg1) throws SQLException {
List<Customer> customerList = new ArrayList<Customer>();
Customer customer = new Customer();
while (rs.next()) {
if (rs.getString("ID") != null)
customer.setEtpId(rs.getString("ID"));
......
......
customerList.add(customer);
}
return customerList;
}
}
извините, я не поставил целый пример примера, но извините, если он был плохо объяснен. Что ж, мне нужно передать номер клиента, чтобы сделать выбор в таблице покупок, например, и принести мне все покупки от этого клиента.
например.
Select * from table purchases p where p.customerid = 4;
Это будет запрос, поэтому давайте представим, что он возвращает 5 записей. Я хочу, чтобы картограф вернул мне список объектов покупки (не клиента) с 5 покупками, которые сделал этот клиент.
Понял сейчас?
Я покажу пример для лучшего понимания.
Спасибо за ответы!