2016-04-27 3 views
1

Я пытаюсь использовать HashMap для жестких значений кода вместо использования запроса.Как заменить SQL-запросString на HashMap

Вот «рабочий» код и SQL, который возвращает объекты типа person через ParameterizedRowMapper.

Public List<Personnel> getPersonnel (long id) { 

LinkedList<Long> arg = new LinkedList<Long>(); 
String query = null; 
SimpleJdbcTemplate template; 
… 
… 
… 
query = "SELECT p.id, p.name, e.emp_type 
"FROM " Personnel p, EmployeeType e" 
"WHERE p.id = ? "; 
args.addLast(id); 

return (template.query(query.toString(), 
     this.personnelRowMapper(), arg.toArray())); 

персонала Ряд Mapper

private ParameterizedRowMapper<Personnel> personnelRowMapper() 
    throws SQLException 
{ 

    ParameterizedRowMapper<Personnel> map; 

    map = new ParameterizedRowMapper<Personnel>() 
    { 

     public Personnel mapRow(final ResultSet rs) 
      throws SQLException 
     { 

      Personnel personnel= null; 

      personnel = Personnel.Factory.newInstance(); 
      personnel.setId(rs.getLong("id")); 
      personnel.setFirstName(rs.getString("Fname")); 
      personnel.setMiddleName(rs.getString("MName")); 
      personnel.setLastName(rs.getString("Lname")); 

      return (contact); 
     } 
    }; 

    return (map); 
} 

Вот код, который использует HashMap вместо запроса.

Public List<Personnel> getPersonnel (long id) { 
List<Personnel> fb = new ArrayList<Personnel>(); 
HashMap<String, String> rs = new HashMap<String, String>(); 
     rs.put("Fname", "John"); 
     rs.put("Lname", "Stoops"); 
     rs.put("Mname", "K."); 

String val1 = (String)rs.get("Fname"); 
String val2 = (String)rs.get("Lname"); 
String val3 = (String)rs.get("Mname"); 

//these 3 lines give me errors 
fb.add(val1); 
fb.add(val2); 
fb.add(val3); 

return fb; 

Вот мои ошибки: «фактические и формальные списки аргументов различаются по длине» «фактический аргумент Строка не может быть преобразована в Контакте метод вызова преобразование»

Как вернуть список Типа персонала используя HashMap вместо SQL?

+1

fb - это список «Персонал», тогда как 'val1' является строкой. Я думаю, вы не можете добавить 'val1' в fb. – yogidilip

ответ

0

Спасибо. Создал новый экземпляр персонала. Затем установите и вытащите все данные один раз.