2016-04-27 12 views
1

クエリを使用する代わりにHashMapを使用してハードコード値を使用しようとしています。SQL queryStringをHashMapに置き換える方法

ここには、ParameterizedRowMapperを使用してperson型のオブジェクトを返す「作業中の」コードとSQ​​Lがあります。ここでは人事行マッパー

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); 
} 

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())); 

ではなく、クエリの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; 

は私のエラーです:「実際の仮引数リストの長さが異なる」

「実引数の文字列は、メソッド呼び出し変換によって問い合わせに変換することができません」どのように私はタイプ人事のリストを返しますSQLの代わりにHashMapを使用していますか?

+1

fbは 'Personnel'のリストで、' val1'はStringです。私はfbに 'val1'を追加できないと思います。 – yogidilip

答えて

0

ありがとうございました。人事の新しいインスタンスを作成しました。次に、データを一度設定して取得します。

関連する問題