gpt4 book ai didi

java - 如何使用map来减少Spring MVC Web应用程序中的对象创建?

转载 作者:行者123 更新时间:2023-12-02 06:06:57 25 4
gpt4 key购买 nike

情况:我正在设计一个基于 Spring MVC 的 Web 应用程序,我有一个名为 customers 的表,它由 3 列 id属性属性值

id 不是主键

以下是我正在使用的Model类:

public class prop {

private String id;
private String property;
private String property_value;

/*setter and getters of these three variables ...*/
}

我的道是:

@Repository("Dao")
public class Dao implements{

@Autowired
private JdbcTemplate jdbcTemplate;

public void setJdbcTemplate(JdbcTemplate jdbcTemplate) {
this.jdbcTemplate = jdbcTemplate;
}

public List<Model> listProp(String id) {

final String sql = "select * from customers where id = ? ";
final List<Model> list = jdbcTemplate.query(sql, new Object[]{id}, new Mapper());
return list;
}
}

我的 Mapper 类是:

public class Mapper implements RowMapper<Model> { 

public Model mapRow(ResultSet rs, int rowNum) throws SQLException {
Model m = new Model();
m.setId(rs.getString(1));
m.setProperty(rs.getString(2));
m.setValue(rs.getString(3));
return wl;
}
}

问题:现在我有一个场景,其中 id=1 有 4 个属性,因此它将有 4 个相应的行并创建 4 个模型对象,

如果 id=1 有 100 个属性,那么会创建 100 个 model 对象,这是低效的,我希望对于 id=1 的所有行都有一个 Model 对象必须创建,我尝试使用 map 但无法正确实现它,有人可以帮忙吗?

注意:在用户界面中,我显示数据库中存在的所有记录

最佳答案

您可以将类属性修改为

public class prop {
private String property;
private String property_value;
/*setter and getters of these three variables ...*/
}

相应地修改Mapper代码以使用HashMap。

public class Mapper {

Map<String ,List<Model>> map = new HashMap<String , List<Model>>();

public Map<String , Model> mapRow(ResultSet rs, int rowNum) throws SQLException {
Model m = new Model();
m.setProperty(rs.getString(2));
m.setValue(rs.getString(3));

if(map.containsKey(rs.getString(1))) {
List<Model> modelList = map.get(rs.getString(1));
modelList.add(m);
} else {
List<Model> modelList = new ArrayList<Model>();
modelList.add(m);
map.put(rs.getString(1),modelList);
}

return map;

}
}

关于java - 如何使用map来减少Spring MVC Web应用程序中的对象创建?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36349760/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com