如何用HashMap替换SQL queryString

时间:2016-04-27 14:21:42

标签: java hashmap jdbctemplate

我正在尝试使用HashMap硬编码值而不是使用查询。

这是'working'代码和SQL,它通过ParameterizedRowMapper返回person类型的对象。

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

人员行映射器

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;

以下是我的错误:“实际和正式的参数列表长度不同” “实际参数String不能通过方法调用转换转换为Contact”

如何使用HashMap而不是SQL返回Type Person的List?

1 个答案:

答案 0 :(得分:0)

感谢。创建了一个新的人事实例。然后设置并获取数据全部一次。