Java 如何用HashMap替换SQL查询字符串

Java 如何用HashMap替换SQL查询字符串,java,hashmap,jdbctemplate,Java,Hashmap,Jdbctemplate,我尝试使用HashMap来硬编码值,而不是使用查询 下面是通过ParameterizedRowMapper返回person类型对象的“工作”代码和SQL Public List<Personnel> getPersonnel (long id) { LinkedList<Long> arg = new LinkedList<Long>(); String query = null; SimpleJdbcTemplate template; … … … que

我尝试使用HashMap来硬编码值,而不是使用查询

下面是通过ParameterizedRowMapper返回person类型对象的“工作”代码和SQL

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()));
公共列表GetPersonal(长id){
LinkedList arg=新建LinkedList();
字符串查询=null;
SimpleJdbcTemplate模板;
…
…
…
query=“选择p.id、p.name、e.emp\u类型
来自“人员p,员工e类型”
“其中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);
}
private ParameterizedRowMapper personnelRowMapper()
抛出SQLException
{
参数化道路地图;
map=新的ParameteredRowMapper()
{
公共人员地图行(最终结果集rs)
抛出SQLException
{
人员=空;
personal=personal.Factory.newInstance();
人事。setId(rs.getLong(“id”));
personals.setFirstName(rs.getString(“Fname”);
personal.setMiddleName(rs.getString(“MName”);
personals.setLastName(rs.getString(“Lname”);
返回(联系);
}
};
返回(地图);
}
下面是使用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;
公共列表GetPersonal(长id){
列表<人员>fb=新阵列列表<人员>();
HashMap rs=新的HashMap();
rs.put(“Fname”、“John”);
rs.put(“名称”、“弯腰”);
rs.put(“Mname”、“K.”);
String val1=(String)rs.get(“Fname”);
String val2=(String)rs.get(“Lname”);
String val3=(String)rs.get(“Mname”);
//这三行给了我错误
fb.add(val1);
fb.add(val2);
fb.add(val3);
返回fb;
以下是我的错误:“实际参数列表和正式参数列表长度不同” “无法通过方法调用转换将实际参数字符串转换为联系人”


如何使用HashMap而不是SQL返回类型人员列表?

谢谢。创建了一个新的人员实例。然后设置并获取所有数据一次。

谢谢。创建了一个新的人员实例。然后设置并获取所有数据一次。

fb是
人员列表,而
val1
是字符串。我会我认为您无法将
val1
添加到fb。fb是
人员的列表,而
val1
是字符串。我认为您无法将
val1
添加到fb。